2013-03-28 1 views
2

У меня есть 2 сборки, которые позволяют называть их A и B. Я назначил им сильные имена, и теперь возникает проблема, когда сборка B ищет старую версию сборки A. ** EDIT2 : Если я удалю AssemblyB, проблема не исчезнет, ​​поэтому просто VS2008 может найти старую версию? Кроме того, через fusionlog я вижу следующее предупреждение: wrn application configuration file binding перенаправляет запрещенные. Связано ли это с этим? **Еще одна сборка, ссылающаяся на старую dll

я получаю несколько ошибок одного и того же рода, вот один отрывок:

You must add a reference to assembly 'AssemblyA, Version=1.2.4737.25316, Culture=neutral, PublicKeyToken=null'. 

Сильный названный AssemblyA внутри проекта показывает эти свойства: enter image description here

Внутри app.config Я размещен этот фрагмент кода:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="AssemblyA" culture="neutral" 
    publicKeyToken="a22e30ac6a0edfc0"/> 
      <bindingRedirect oldVersion="1.2.4737.25316" newVersion="1.3.0.19440"/> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

Но это не сработает. У меня есть доступ к источнику обеих сборок.

EDIT: Если удалить сильные имена и добавить старый (слабую) с именем DLL к проекту он выдаст сообщение об ошибке с просьбой о сильной версии с именем

You must add a reference to assembly 'AssemblyA, Version=1.3.0.19440, Culture=neutral, PublicKeyToken=a22e30ac6a0edfc0'. 

Что здесь происходит?

ответ

2

Некоторые библиотеки DLL по-прежнему относятся к старой (слабой названной) версии других DLL. К счастью, сборки пришли с источником, поэтому мне пришлось перекомпилировать все, включая ключ.

После того, что другая ошибка пришла вверх по линии «манифест определение локализованной ассамблеи не соответствует ссылке на сборку»

Чтобы исправить это я добавил следующее в app.config.

<?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
     <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
      <publisherPolicy apply="no" /> 
      <assemblyIdentity name="Assemblyname" culture="neutral" publicKeyToken="3a5628535d42dbed"/> 
      <bindingRedirect oldVersion="1.3.0.15233" newVersion="1.3.0.40647" /> 
      </dependentAssembly> 
     </assemblyBinding> 
     </runtime> 
    </configuration> 
+0

Что делать, если я нахожусь на проекте без app.config –

+0

@ ShadyM.Najib Зависит от того, какой проект вы работаете. Вы можете попробовать добавить его с помощью этого метода: http://msdn.microsoft.com/en-us/library/ms184658(v=vs.90).aspx. Если вы работаете с компонентом скрипта SSIS, вы можете попробовать изменить этот файл: C: \ Program Files \ Microsoft SQL Server \ 100 \ DTS \ Binn \ DtsDebugHost.exe.config, поместите фрагмент кода между тегами , – tutu

+0

На самом деле я имею в виду тип проекта, который не поддерживает файл конфигурации. Проект Windows 8, например: D –