运行时为了版本控制而区分常规和强命名的程序集.仅对具有强名称的程序集进行版本检查.
如果你这样做有一个强命名程序集,您可以重定向引用.请参阅MSDN - 重定向程序集版本.
在你的情况下,你可以使用AppDomain.AssemblyResolve.这是一个例子:
AppDomain.CurrentDomain.AssemblyResolve += (sender, eventArgs) =>
{
var fullName = new AssemblyName(eventArgs.Name);
// should check that the assembly is the one we support old versions for
var wantedDLL = fullName.Name + ".dll";
// locate the DLL here... your path will vary
var found = Assembly.LoadFile(Path.Combine(Environment.CurrentDirectory, wantedDLL));
return found;
};
Run Code Online (Sandbox Code Playgroud)
或者,如果您知道确切的旧版本号,则可以使用Assembly.Load(AssemblyName)重载加载它.
var fullName = new AssemblyName(eventArgs.Name)
{
Version = new Version(1, 0, 0, 0)
};
return Assembly.Load(fullName);
Run Code Online (Sandbox Code Playgroud)
你也应该小心这里的错误.抛出异常会导致奇怪的行为,并且如果程序集无法加载,那么该方法将无限递归导致StackOverflowException.
| 归档时间: |
|
| 查看次数: |
2075 次 |
| 最近记录: |