Не удалось загрузить сборку Microsoft.Build.Utilities.Core Version = 15.1.0.0 - PullRequest
0 голосов
/ 10 марта 2020

У меня проблема с выполнением задания gulp для преобразования моих файлов конфигурации. Он сообщает об ошибке:

error MSB4062: The "TransformXml" task could not be loaded from the assembly C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0\Web\Microsof t.Web.Publishing.Tasks.dll. Could not load file or assembly 'Microsoft.Build.Utilities.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Confi rm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

Что делает задача:

  1. Создает файл _msbuild.proj с файлом конфигурации, который необходимо преобразовать. Файл выглядит следующим образом (очевидно, источник, преобразование и назначение заполнены реальными данными):
<Project ToolsVersion="4.0" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <UsingTask TaskName="TransformXml" AssemblyFile="C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
    <Target Name="Transform">
        <TransformXml Source="" Transform="" Destination=""/>
    </Target>
</Project>
Он запускает этот файл для msbuild: C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\msbuild.exe .\_msbuild.proj /t:Transform

Я уже видел этот ответ, который предполагает, что это пакет nuget и может быть поврежден . Я не думаю, что это так, потому что все остальные в моем проекте не имеют этой проблемы. Также у меня есть проблема c dll - Microsoft.Build.Utilities.Core, однако в более высокой версии (16.4.0), установленной в различных местах вместе с установкой do tnet и VS.

Единственное отличие, которое я вижу, это что я использую VS 2019 и Microsoft.Web.Publishing.Tasks.dll (библиотека, которая содержит Transform Xml тактов и зависит от отсутствующей библиотеки) в другом месте на диске, чем в модуле преобразования gulp - он у меня в C:\Program Files (x86)\Microsoft Visual Studio, а у других это есть в C:\Program Files (x86)\MSBuild

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

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Не удалось загрузить сборку Microsoft.Build.Utilities.Core Version = 15.1.0.0

Мне кажется, проблема в том, что вы использовали msbuild.exe версии Framework, а не msbuild VS2019.

И C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\msbuild.exe .\_msbuild.proj /t:Transform означает, что вы используете msbuild Framework.

Чтобы объяснить это более подробно :

MSBuild из VS2019 интегрируется с различными параметрами среды, напрямую связан с вашими различными операциями в VS, а msbuild платформы имеет только самую базовую c функцию проекта компиляции, в которой нет задачи TransformXml ,

Кроме , Microsoft.Web.Publishing.Tasks.dll является лишь частью msbuild VS2019, поэтому он может быть распознан msbuild VS2019. Но эта dll не под C:\Windows\Microsoft.NET\Framework64\v4.0.30319\xxxx, поэтому использование msbuild Framework не может получить то, что вы хотите.

Решение

В качестве обходного пути вы должны использовать MSBuild VS2019 для соответствуют Microsoft.Web.Publishing.Tasks.dll, который существует в его папке.

1) используйте C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MSBuild.exe для выполнения _msbuild.proj.

2) или просто используйте Командная строка разработчика

И я думаю, что кто-то еще также использовал этот msbuild.

Надеюсь, он может вам помочь.

0 голосов
/ 18 апреля 2020

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

Я скачал Nuget 5.5, совместимый с VS 2019 (вы можете увидеть его в Справка> О VS2019) и проблема исчезла.

Вы можете скачать ее с: https://www.nuget.org/downloads

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