我的目标是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;
}
答案 0 :(得分:0)
这取决于您使用的目标.Net Framework版本。 尝试定位要加载的程序集所针对的.Net Framework版本,并使用Specific Version = false。 它会自动加载所需的版本。