MSBuild публикует версию сборки, отличную от требуемой во время выполнения - PullRequest
0 голосов
/ 15 октября 2019

У меня есть проект Visual Studio ASP.NET Core Web API, который в локальной среде разработчика восстанавливает, создает и запускает без проблем.

У меня есть конвейер TeamCity со следующими шагами:

.NET CLI Restore
.NET CLI Build
.NET CLI Publish

Конвейер работает без ошибок.

Опубликованный набор двоичных файлов развернут в IIS.

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

FileLoadException: Could not load file or assembly 'Microsoft.Extensions.WebEncoders, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Я могуРешите эту проблему, добавив явную ссылку на пакет к .csproj:

<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />

Однако в следующий раз я получу другое исключение:

FileLoadException: Could not load file or assembly 'Microsoft.AspNetCore.StaticFiles, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

И так далее, как это работаетчерез дерево зависимостей.

Очевидно, что нереально повторять этот процесс до тех пор, пока все зависимости не будут явно указаны с помощью ссылок на пакеты.

При запуске на агенте сборки TeamCity MSBuild Publish выбирает другую версию сборкичем версия, требуемая во время выполнения.

...