【问题标题】:Support multiple assemblies on ASP.NET\C# projects支持 ASP.NET\C# 项目上的多个程序集
【发布时间】:2012-08-21 06:27:02
【问题描述】:

我们正在开发一个 ASP.NET 应用程序,但在与 MS dll (Microsoft.AnalysisServices) 集成时遇到了一些问题?

原始项目链接到 SQLServer2005 (Version=9.0.242.0) 附带的 dll。迁移到 SQLServer2008R2 (version=10.0.0.0) 后遇到了这个问题:

无法加载文件或程序集“Microsoft.AnalysisServices, 版本=9.0.242.0,文化=中性,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。有没有一种方法可以让我在生产服务器上动态选​​择正确的程序集

【问题讨论】:

    标签: sql-server-2008 sql-server-2005 c#-4.0 dll .net-assembly


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以连接到 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;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-19
        • 1970-01-01
        • 1970-01-01
        • 2011-04-11
        相关资源
        最近更新 更多