正在加载程序集的最新版本
本文关键字:最新版 新版本 程序集 加载 | 更新日期: 2023-09-27 18:24:43
我的目标是SQL Server SMO库的版本10。我想设置我的应用程序,使其使用机器上安装的SMO库的最新版本,因为最终用户可能拥有版本10或11。
如何将我的Visual Studio C#项目设置为这种行为?我以通常的方式加载程序集,并且Specific Version=false。"特定版本"似乎只是编译时的更改,但在运行时,它仍然会查找具有特定版本的程序集。
在一台只有版本11的hte程序集的机器上测试时,我的应用程序(目标是版本10)无法找到版本10的程序集,最终无法加载程序集。
有没有办法让程序加载程序集的最新版本?我一直在查看AppDomain.AssemblyResolve,但不确定简单地再次调用程序集(可能不指定版本)是否有效。
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
Logger.Error("Failed to load assembly: " + args.Name + " from " + args.RequestingAssembly);
var assembly = Assembly.Load(args.Name);
return assembly;
}
这取决于您使用的目标.Net Framework版本。尝试以要加载的程序集所针对的.Net Framework版本为目标,并使用Specific Version=false。它将自动加载所需的版本。