перезаписать dll в выводе сборки, используя csproj - PullRequest
0 голосов
/ 26 октября 2018

Существует известная проблема с System.Net.Http.

Visual Studio 2017 возьмет System.Net.Http.dll из C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib и поместит его в вывод сборки.На моем компьютере это версия 4.3.4 (версия файла 4.6.26011.1)

Если вы используете <PackageReference> или даже прямой <Reference> для другой версии System.Net.Http.dll, Visual Studio 2017 будетигнорируйте вашу версию в пользу ее версии при создании вывода сборки (в папке / bin).

Это приведет к ошибкам при попытке внешнего вызова dll.

Основной вопрос:

Есть ли способ заставить msbuild / csproj использовать версию, на которую я ссылаюсь из NuGet?Может быть, я могу скопировать и перезаписать существующий файл System.Net.Http.dll в действии после сборки?

Что я пробовал:

Я пытался использоватьПереадресация привязки, но это никак не влияет на вывод сборки ( см. этот комментарий ).

1 Ответ

0 голосов
/ 26 октября 2018

Возможно, есть лучший способ сделать это, но у меня это работает:

  1. Найдите правильную версию System.Net.Http.dll и поместите ее где-то доступный для вашего проекта (как в папке / libs в ваша корневая папка проекта)
  2. Используя действие msbuild / csproj после сборки, скопируйте правильную версию в вывод сборки

.csproj фрагмент для шага 2:

<Target Name="CopyFiles" AfterTargets="Build">
  <Copy SourceFiles="libs\System.Net.Http.dll" DestinationFolder="$(OutputPath)" />
</Target>

Примечание:

Предположительно, это будет исправлено в net472

...