sql-server-2008 - 支持 ASP.NET\C# 项目上的多个程序集

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

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

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

Could not load file or assembly 'Microsoft.AnalysisServices, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified.



这是可以理解的,因为我们用一个版本编译项目,然后另一个版本位于服务器上。在开发机器上安装 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 元素中使用 range 。所以问题还是给大家打开了! .最重要的是,我知道我有 9.0.242.0 版本,但客户版本可能是 9.0.242.0 或 10.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;
    }

关于sql-server-2008 - 支持 ASP.NET\C# 项目上的多个程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130591/

相关文章:

jquery - 如何使用 jquery 或 javascript 通过文件上传显示图像,路径将存储在数据库上?

web-services - 将 SQL Server 数据库中的更改与其远程客户端数据库同步

sql-server - Microsoft SQL Server - 谁创建了存储过程?

sql-server-2005 - 将数据类型 nvarchar 转换为 datetime 时出错

c# - 使用适用于 .NET 的 AWS S3 SDK 从 Amazon S3 下载并行批处理文件

c# - ClientBase 没有实现 IDisposable 成员

c# - LINQ - 向每个结果添加静态文本

sql - 临时表列大小在多少行之后确定?

sql - 在 SQL Server 2008 Management Studio 中查找存储过程

sql-server-2008 - SQL Server 2008 - 换行符和全文查询