private bool ValidateCachedAssemblyVersion(string path)
{
AppDomain domain = AppDomain.CreateDomain("VersionChecker",
new Evidence(AppDomain.CurrentDomain.Evidence),
AppDomain.CurrentDomain.SetupInformation);
try
{
Type checkerType = typeof(VersionChecker);
var checker = (VersionChecker)domain.
CreateInstanceFrom(
checkerType.Assembly.Location,
checkerType.FullName).Unwrap();
checker.LoadAssembly(path);
string version = checker.GetVersion();
if (version != Program.GetProgramVersionInfo())
return false;
return EnsureMethodsExist(checker.GetMethods());
}
finally
{
AppDomain.Unload(domain);
}
}