Если у меня есть две сборки с одинаковым именем в GAC, как мне сообщить .Net, что использовать? - PullRequest
3 голосов
/ 28 октября 2008

У меня есть две сборки с одинаковым именем в кеше Global Assembly, но с разными номерами версий. Как мне сообщить моей программе, на какую версию ссылаться?

Кстати, это страница VB.Net на веб-сайте ASP.Net.

Ответы [ 4 ]

6 голосов
/ 28 октября 2008

Добавьте сборку в файл конфигурации в разделе сборки с номером версии.

<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 автоматически связывает эту сборку с ресурсом при компиляции каждого модуля кода.

5 голосов
/ 28 октября 2008

Пока номер версии отличается (что потребуется), вы можете указать правильную версию через файл 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 голосов
/ 28 октября 2008

Когда вы добавляете ссылку на 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"/>
2 голосов
/ 28 октября 2008

Чтобы установить сборку в GAC, вы должны дать ей строгое имя. Сильные имена никогда не дублируются. Таким образом, чтобы указать, какую сборку вы хотите использовать, укажите ее строгое имя.

...