【问题标题】:If I have two assemblies with the same name in the GAC, how do I tell .Net which to use?如果我在 GAC 中有两个同名的程序集,我如何告诉 .Net 使用哪个程序集?
【发布时间】:2008-10-28 19:03:38
【问题描述】:

我在全局程序集缓存中有两个同名但版本号不同的程序集。如何告诉我的程序要引用哪个版本?

为了记录,这是一个 ASP.Net 网站中的 VB.Net 页面。

【问题讨论】:

  • 这是运行时还是设计时?
  • 嗯,两者都有,但运行时才是最重要的。

标签: .net gac


【解决方案1】:

将程序集添加到带有版本号的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 在编译每个代码模块时会自动将此程序集链接到资源。

【讨论】:

    【解决方案2】:

    只要版本号不同(这是必需的),您就可以通过 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>
    

    【讨论】:

      【解决方案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"/>
      

      【讨论】:

        【解决方案4】:

        要在 GAC 中安装程序集,您必须为其指定一个强名称。强名称永远不会重复。因此,要指定要使用的程序集,请通过强名称引用它。

        【讨论】:

          猜你喜欢
          • 2013-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多