Разрешение ссылки сборки .NET на другое имя? - PullRequest
7 голосов
/ 24 ноября 2010

Ссылки на мой проект Library1.dll и Library2.dll . Library2.dll зависит от Library1.dll , но он был скомпилирован для ссылки на него под другим именем, Library1.Net40.dll .

Есть ли хороший способ сообщить моему приложению перенаправить все ссылки для Library1.Net40.dll для разрешения Library1.dll ? Может быть, что-то похожее на способ перенаправления версий, используя ?

У меня есть решение, которое обрабатывает событие AppDomain.AssemblyResolve , но это немного хак, и я надеюсь, что есть лучший способ сделать это.

Edit: Для справки, вот как я решил проблему с помощью события AppDomain.AssemblyResolve для перенаправления на другую сборку.

1 Ответ

4 голосов
/ 24 ноября 2010

Вы пробовали играть с элементом ?

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="Library1.Net40"
                              publicKeyToken="..."
                              culture="neutral" />
            <codeBase version="2.0.0.0"
                      href="Library1.dll"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

(Не проверено; не знаю, работает ли оно.)

CF: Я помещаю это обновление здесь, потому что это немного долго для комментариев :)

Хорошая идея, спасибо. У меня работает редирект, но он жалуется, потому что имена разные, вот журнал:

LOG: Attempting download of new URL file:///C:/Project/bin/Library1.dll.
LOG: Assembly download was successful. Attempting setup of file: C:\Project\bin\Library1.dll
LOG: Entering download cache setup phase.
LOG: Assembly Name is: Library1, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
WRN: Comparing the assembly name resulted in the mismatch: NAME
ERR: The assembly reference did not match the assembly definition found.
ERR: Setup failed with hr = 0x80131040.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
...