net461 - Установка System.IO.Compression на v4.3.0 добавляет DLL с версией 4.0.0?Это вызывает проблемы, разрешающие косвенную зависимость - PullRequest
0 голосов
/ 02 апреля 2019

Для справки: у меня есть проект asp.net веб-сайт (старый), который ссылается на проект библиотеки классов. Оба ранее предназначались для net45, а недавно были обновлены до net461.

Все работало нормально, пока я не добавил пакет nuget StackExchange.Redis в свою библиотеку классов и не начал использовать его. Локальный сборка проекта для меня прекрасна, но при его сборке на нашем агенте TFS возникают некоторые проблемы со ссылками на сборки.

Здесь действительно два вопроса:

  1. Как я могу это исправить?
  2. Почему dll пакета nuget, который я установил в v4.3.0, говорит мне, что это v4.0.0?

Я попытался исправить это постепенно, чтобы увидеть, в чем проблема.

  1. Добавление StackExchange.Redis к классу libarary успешно собирается на нашем компьютере TFS

  2. Добавление логики для ссылки на nuget приводит к сбою сборки при предварительной компиляции сайта.

Error ASPCONFIG: Could not load file or assembly 'System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.

Я подумал, что это связано с отсутствием DLL в проекте веб-сайта, поэтому я добавляю их.

  1. Здесь я запутался. Я вручную добавил System.IO.Compression v4.3.0 (ближайший из доступных) и проверил версию dll в каталоге пакетов с помощью следующей команды и получил такой результат:
> ([system.reflection.assembly]::loadfile("C:\path\to\solution\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll")).FullName
> System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Я бы ожидал, что Версия будет 4.3.0, как сказано в каталоге, но вместо этого 4.0.0?

Это вызывает ошибку при сборке нашего агента TFS:

The primary reference "class_project.dll" could not be resolved because it has an indirect dependency on the .NET Framework assembly "System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which has a higher version "4.2.0.0" than the version "4.0.0.0" in the current target framework. 

Я даже пытался добавить перенаправление привязки, чтобы понизить ссылку в файле web.config проекта веб-сайта, но это также не удалось с той же ошибкой.

Любой вклад приветствуется

...