5

我们正在开发一个 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,但由于这是一个“强名称”程序集,它不像人们想象的那样工作。

我找到的相关链接是:
http ://social.msdn.microsoft.com/Forums/en-US/sqlanalysisservices/thread/47d0b992-3c10-4851-b2a5-9f72d2c0976e

有人可以指导我找到解决此问题的链接吗?

更新:我想我没有正确测试它,因为它不适用于 SQLServer2008 R2 中的其他服务器。我猜你不能在 newVersion 元素中使用范围。所以这个问题仍然是为每个人打开的!. 底线是我知道我有 9.0.242.0 版本,但客户版本可能是 9.0.242.0 或 10.0.0.0。有没有一种方法可以让我在生产服务器上动态选​​择正确的程序集

4

2 回答 2

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;
    }
于 2019-05-17T10:24:18.373 回答
-1

尝试将 bindingRedirect 添加到您的 web.config。

于 2012-08-28T09:42:32.560 回答