我们正在开发一个ASP.NET应用程序,并且在与MS dll(Microsoft.AnalysisServices)集成时遇到一些问题?
原始项目与SQLServer2005(版本= 9.0.242.0)附带的dll相关联。迁移到SQLServer2008R2(版本= 10.0.0.0)后,我们遇到了这个问题:
无法加载文件或程序集'Microsoft.AnalysisServices, Version = 9.0.242.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91' 或其中一个依赖项。系统找不到该文件 指定。
这是理解的,因为我们用一个版本编译项目,然后另一个版本位于服务器上。在开发机器上安装SQLServer2008R2后,问题得到了解决。
但是我们现在还有另一个问题需要支持SQLServer2005和SQLServer2008R2环境。我知道我们可以使用配置文件重定向dll的搜索路径(它将搜索与其编译的不同版本),但我似乎无法找到如何将其用于Web应用程序的说明(在w3wp)。我们尝试使用“特定版本”= false,但由于这是一个“强名称”程序集,因此无法正常运行。
有人可以指导我找到解决此问题的链接吗?
更新:我想我没有正确测试它,因为它对SQLServer2008 R2中的其他服务器不起作用。我猜你不能在newVersion元素中使用range。所以这个问题仍然适合每个人! 。底线是我知道我有版本9.0.242.0但客户版本可能是9.0.242.0或10.0.0.0。有没有一种方法可以在生产服务器上动态选择正确的程序集
答案 0 :(得分:0)
您可以连接到AppDomain.CurrentDomain.AssemblyResolve并加载所需的程序集。如果返回null,它将正常查找。
例如
AppDomain.CurrentDomain.AssemblyResolve += Resolve;
private static Assembly Resolve(object source, ResolveEventArgs args)
{
if (args.Name.StartsWith("Microsoft.AnalysisServices,"))
return Assembly.LoadFile("Microsoft.AnalysisServices.dll");
return null;
}
答案 1 :(得分:-1)
尝试将bindingRedirect添加到您的web.config。