DLL ад - Не удалось загрузить файл или сборку System.Threading.Tasks.Extensions - PullRequest
0 голосов
/ 13 марта 2020

У меня очень простое. NET Приложение Framework 4.7.2 со следующими нюгетами:

<packages>
  <package id="Autofac" version="5.1.2" targetFramework="net472" />
  <package id="DynamicData" version="6.14.8" targetFramework="net472" />
  <package id="Microsoft.Bcl.AsyncInterfaces" version="1.1.0" targetFramework="net472" />
  <package id="MSBuildTasks" version="1.5.0.235" targetFramework="net472" developmentDependency="true" />
  <package id="ReactiveUI" version="11.2.3" targetFramework="net472" />
  <package id="Serilog" version="2.9.0" targetFramework="net472" />
  <package id="Serilog.Enrichers.Process" version="2.0.1" targetFramework="net472" />
  <package id="Serilog.Enrichers.Thread" version="3.1.0" targetFramework="net472" />
  <package id="Serilog.Sinks.File" version="4.1.0" targetFramework="net472" />
  <package id="Splat" version="9.3.11" targetFramework="net472" />
  <package id="System.Reactive" version="4.3.2" targetFramework="net472" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="4.7.0" targetFramework="net472" />
  <package id="System.Threading.Tasks.Extensions" version="4.5.3" targetFramework="net472" />
  <package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
</packages>

Как видите, в версии 4.5.3 есть ссылка System.Threading.Tasks.Extensions (я могу ' изменить эту версию, потому что другие пакеты зависят от нее).

Когда я go на свойства этой ссылки на DLL в Visual Studio Solution Explorer, он показывает версию 4.2.0.1, на которую ссылается .....\packages\System.Threading.Tasks.Extensions.4.5.3\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll.

В app.config автоматически создается перенаправление привязки:

   <dependentAssembly>
    <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
  </dependentAssembly>

При запуске приложения возникает исключение:

Exception message

Я уже пытался изменить перенаправление привязки на что-то вроде:

   <bindingRedirect oldVersion="0.0.0.0-99.99.99.99" newVersion="4.5.3" />

Но проблема не устранена. Я понятия не имею, как решить эту длл-ад. Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 13 марта 2020

Когда я go на свойства этой ссылки на DLL в Visual Studio Solution Explorer, он показывает версию 4.2.0.1, на которую ссылается xxxxxx

Во-первых, я думаю, у вас есть небольшое недопонимание о DLL version и the nuget version.

version 4.5.3 - это просто номер версии пакета System.Threading.Tasks.Extensions, а version 4.2.0.1 - это просто System.Threading.Tasks.Extensions.dll (существует в пакете nuget). Они не являются концепцией вообще. И вы можете увидеть такие библиотеки в файле xxx.csproj.

enter image description here

Версия пакета nuget содержит несколько конкурирующих DLLS для различных структур проекта, которые будет автоматически установлен в соответствующий проект в соответствии с механизмом nuget.

DLL ад - Не удалось загрузить файл или сборку System.Threading.Tasks.Extensions

Как вы сказали , у вас есть пакет nuget под названием System.Reactive version 4.3.2, который зависит от System.Threading.Tasks.Extensions 4.5.3 в вашем проекте. Вы можете видеть это:

enter image description here

И из вашего журнала ошибок кажется, что проект ссылается на System.Threading.Tasks.Extensions.dll 4.2.0.0, которого он не существует в пакете nuget System.Threading.Tasks.Extensions 4.5.3 и должно быть System.Threading.Tasks.Extensions.dll 4.2.0.1. Не уверен, что вы изменили номер версии или причину проекта.

Вы можете проверить следующие шаги:

Решение

1 ) убедитесь, что System.Threading.Tasks.Extensions версия 4.5.3 в packages.config файле.

2) убедитесь, что вы изменили версию dll на 4.2.0.1 в xxx.csproj file

3) Прежде чем переустанавливать их, сначала очистите кэш Nuget , затем запустите update-Package -reinstall в Tools -> Nuget Package Manager - > Package Manager Console для переустановки пакетов

4) создайте новый проект framework 4.7.2 и затем обратитесь к этим пакетам nuget, чтобы проверить, вызвано ли оно вашим проектом.

...