加载程序集的最新版本

时间:2013-07-23 15:01:25

标签: c# .net .net-4.0 .net-assembly

我的目标是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;
    }

1 个答案:

答案 0 :(得分:0)

这取决于您使用的目标.Net Framework版本。 尝试定位要加载的程序集所针对的.Net Framework版本,并使用Specific Version = false。 它会自动加载所需的版本。