Ошибка публикации проекта с MSBuild после обновления с. Net Framework 4.7 до 4.8 - PullRequest
4 голосов
/ 08 января 2020

Я обновляю Asp. Net Проект веб-сайта до. net framework 4.8 с 4.7. После обновления проект успешно компилируется из Visual Studio и также работает без проблем на локальном компьютере. Когда тот же проект публикуется с использованием MSBuild, я получаю следующую ошибку: (AspNetMerge target) -> aspnet_merge : error occurred: An error occurred when merging assemblies: Unresolved assembly reference not allowed: System.Net.Http.

Используемая команда MsBuild: msbuild.exe "D:\Enterprise\Enterprise.sln" /nologo /nr:false /t:Build /p:DeployOnBuild=true /p:Configuration=Release /p:PublishProfile=VSO

И файл VSO.pub xml, на который есть ссылка, имеет следующую конфигурацию:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>..\..\Publish\Web</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
    <PrecompileBeforePublish>True</PrecompileBeforePublish>
    <EnableUpdateable>False</EnableUpdateable>
    <DebugSymbols>False</DebugSymbols>
    <WDPMergeOption>MergeAllOutputsToASingleAssembly</WDPMergeOption>
    <UseMerge>True</UseMerge>
    <SingleAssemblyName>MergedAssembly</SingleAssemblyName>
  </PropertyGroup>
</Project>

Вы можете видеть, что для <UseMerge> установлено значение true, которое объединит выходные данные в одну сборку. Я попытался вообще отключить слияние, что решило проблему, но я хочу оставить включенным параметр слияния, так как он был настроен таким образом в конвейере выпуска ранее. Любая помощь будет оценена.

Ответы [ 2 ]

4 голосов
/ 31 марта 2020

System.Net.Http - это библиотека, которая доставляет столько проблем простым разработчикам. Есть много невероятных проблем с ним после обновления пакетов NuGet или после нацеливания на новые. NET Framework.

К сожалению, не существует серебряной пули для решения всех этих проблем. Это зависит от многих факторов, которые действительно вызвали эту ошибку.

Что, скорее всего, вызывает такие ошибки

Скорее всего, это раздел <dependencyAssemblies> файла конфигурации. После проекта. NET Ретаргетинг платформы. Существуют пакеты NuGet, которые не могут быть разрешены с использованием старых версий сборок зависимостей.

Что вы можете попробовать

Используйте следующий рабочий процесс для перенацеливания ваших проектов на новые . NET Версия платформы:

  1. Изменение. NET Версия платформы в проекте / решении
  2. Обновление пакетов NuGet (в консоли диспетчера пакетов: update-package)
  3. Переустановите пакеты NuGet (в консоли диспетчера пакетов: update-package -reinstall)
  4. Перестройте проект / решение
  5. Проверьте окно Warnings для некоторых записей, таких как Found conflicts between different versions of the same dependent assembly. Дважды щелкните эти записи и нажмите Да в каждом всплывающем окне.
  6. Перестройте проект / решение снова

Теперь ваш проект правильно перенаправлен на новый. NET Версия фреймворка с обновлением всех зависимостей. И ошибка должна исчезнуть.

3 голосов
/ 31 марта 2020

Я решил эту проблему, установив пакет Microsoft.As pnet .Merge NuGet (не забудьте установить флажок предварительного просмотра).

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...