ASP.net:我可以在bin文件夹中拥有2个不同版本的相同dll / assembly吗?

时间:2012-06-26 13:07:48

标签: asp.net iis dll

我正在开发一个在ASP.net中实现的大型Web应用程序。应用程序的主要部分,其中大部分由第三方实施,由其他人管理,所以我对它没有多少控制权。

我已经实现了8个ASP.net自定义控件,这些控件可以编译为单独的DLL并放入应用程序的bin文件夹中。这些控件必须链接到主应用程序中的两个DLL(或应该是程序集?),这些DLL也存储在bin文件夹中。我们称他们为MainAppCore1.dllMainAppCore2.dll。这些似乎是托管.NET代码。

我的问题是主应用程序已经更新,更糟糕的是看起来在不久的将来经常更新,由于我已经编译了所有控件与主应用程序dll的原始版本的错误问题,所以现在他们不会加载。显然,我可以通过针对MainAppCore1.dllMainAppCore2.dll的新版本重新编译所有控件来解决问题,但我正在寻找更智能的方法

我的问题是:是否可以在bin文件夹中保留主应用程序dll的 2个版本,以便每次主应用程序升级时我的控件都可以继续工作(可能)?

我不想编辑web.config文件,因为这会在政治上变得复杂。

2 个答案:

答案 0 :(得分:4)

简短而简单,你不能。从广义上讲,在一个文件夹中有两个版本的.net程序集只能在GAC(全局程序集缓存)文件夹中进行,该文件夹是一个特殊文件夹,可以运行多个版本的.Net程序集,并且您的控件程序集可以指向GAC中的特定版本,不管那里有多少个版本。一种可能的解决方案是让您的第三方供应商强烈命名他们的MainCore1.dll并在每次版本更改时将其安装在GAC中,然后在您的web.config中指向特定版本。

答案 1 :(得分:1)

将8个自定义控件放在自己的库项目中,并从主项目中引用该项目。大概所有东西都在源代码控制中,所以当你做“获取最新”时不应该有任何版本问题。