gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:04:12 24 4
gpt4 key购买 nike

我们正在开发 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com