Сбой команды "dotnet build" с ошибкой MSB6006: "csc.exe" завершен с кодом 1 - PullRequest
1 голос
/ 09 мая 2019

Я пытаюсь получить решение Xamarin Forms для сборки из командной строки как часть сценария сборки, используя команду dotnet build <solution.sln>. Большинство проектов в построении решения; однако два проекта терпят неудачу с этим сообщением об ошибке: error MSB6006: "csc.exe" exited with code 1. (в Ubuntu) и error MSB6006: "csc.exe" exited with code 8. (в Mac).

У меня работает Ubuntu 18.04 (с использованием подсистемы Windows для Linux) и MacOS 10.13.6 на разных машинах.

Я также попытался запустить dotnet build <solution.sln> из командной строки Windows, которая вместо этого выводит это сообщение об ошибке:

ошибка MSB4062: Не удалось загрузить задачу «XamarinLive.Build.XamarinLiveTask» из сборки C: \ Users \ Jason.nuget \ packages \ livexaml \ 2.1.22 \ build \ XamarinLive.Build.dll. Не удалось загрузить файл или сборку «Microsoft.Build.Utilities.v4.0, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a». Система не может найти указанный файл. Убедитесь, что объявление правильное, что сборка и все ее зависимости доступны и что задача содержит открытый класс, который реализует Microsoft.Build.Framework.ITask.

Однако решение работает и прекрасно работает в VS2017 (версия 15.9.7). Я попытался просмотреть двоичный журнал, который был сгенерирован, но я не вижу в этом особого смысла, и, похоже, нет очевидных ошибок (в Ubuntu и Mac). Может ли сообщение об ошибке Windows каким-либо образом быть связано?

Проекты, которые терпят неудачу, нацелены на netstandard 2.0 (то же самое, что проекты, которые строят) Версия, возвращаемая dotnet --version во всех трех средах: 2.1.504.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 10 мая 2019

Вам нужно использовать msbuild.exe вместо dotnet строить для этой ситуации.

msbuild.exe работает в полной среде, в то время как dotnet build работает в .NET Core, и большинство задач сборки не поддерживают это.

Когда вы собираете их в VS, он на самом деле вызывает msbuild.exe для построения решения. Так что вы можете собрать его хорошо из командной строки разработчика, поскольку он также вызывает msbuild.exe.

Для vs2017 вы можете найти его в C:\Program Files (x86)\Microsoft Visual Studio\2017\Edition\MSBuild\15.0\Bin.

Подробнее см. Ответ Мартина на этот аналогичный вопрос . Благодаря его подробному описанию!

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