.net Зависимая сборка зависимой сборки не загружена из GAC - PullRequest
0 голосов
/ 21 ноября 2018

GAC содержит system.net.http 2.0.0.0, однако процесс сборки жалуется, что не может быть найден:

The primary reference "ABC.dll" could not be resolved 
because it has an indirect dependency on the framework assembly 
"System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
which could not be resolved in the currently targeted framework. 
".NETFramework,Version=v4.0". 

И ABC.dll, и мой текущий проект нацелены .NET Framework 4

Выход gacutil -l отображает обе версии:

enter image description here

System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL

Дополнительно опробовано:
Изменение конфигурации машины безрезультатно

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" />
      <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

Невозможно сделать:
Изменить версию .csproj, .net или связать нужный .dll с приложением.Поскольку зависимости abc.dll и system.net.http развернуты на клиентских компьютерах как часть GAC, поэтому на моем компьютере разработчика допускаются только изменения.

1 Ответ

0 голосов
/ 21 ноября 2018

Решение

Заблуждение: эталонные сборки поступают из GAC во время компиляции.
На самом деле это не так.

Вы можете изменить подробность журнала сборки на diagnostic и посмотреть, где и какие сборки ищутся.(Vs Menu -> Tools -> Options -> Projects and Solutions -> Build & Run -> Verbosity)

Исправление

Под solution explorer -> right click on project -> properties -> reference paths Добавить каталог, содержащий все ваши сборки

Кроме того, вы можете сделать это на уровне машины, отредактировав
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\AssemblyFolders.config

...