我在全局程序集缓存中有两个具有相同名称的程序集,但版本号不同。如何告诉我的程序引用哪个版本?
为了记录,这是ASP.Net网站上的VB.Net页面。
答案 0 :(得分:6)
将程序集添加到版本号为assemblies部分下的配置文件中。
<configuration>
<system.web>
<compilation>
<assemblies>
<add assembly="System.Data, Version=1.0.2411.0,
Culture=neutral,
PublicKeyToken=b77a5c561934e089"/>
</assemblies>
</compilation>
</system.web>
</configuration>
add元素添加了一个在编译动态资源时使用的程序集引用。在编译每个代码模块时,ASP.NET会自动将此程序集链接到资源。
答案 1 :(得分:5)
只要版本号不同(这是必需的),您就可以通过web.config文件指定正确的版本。这就是我在我的一个应用程序中设置的东西,以引用正确版本的Crystal Reports,因为我们在GAC中有多个版本:
<system.web>
<compilation>
<assemblies>
<add assembly="CrystalDecisions.Web, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.Shared, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportSource, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.Enterprise.Framework, Version=11.5.3300.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
</assemblies>
</compilation>
</system.web>
答案 2 :(得分:3)
在配置文件中添加对DLL的引用时,请指定版本以及强名称:
<add assembly="Foo.Bar, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
或
<add assembly="Foo.Bar, Version=2.5.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
答案 3 :(得分:2)
要在GAC中安装程序集,您必须为其指定一个强名称。强名称永远不会重复。因此,要指定要使用的程序集,请使用强名称引用它。