Visual Studio 2017 msbuild отличается от клиентских инструментов dotnet - PullRequest
0 голосов
/ 30 января 2019

У меня есть проект .NET Core 2.0, который прекрасно строит и выполняет тесты xunit в Visual Studio 2017. Мы используем Team City для наших сборок CI, но он использует инструменты запуска сборок .NET CLI (dotnet).

У нас недавно были некоторые изменения, которые были хороши в Visual Studio, но когда наш процесс Team City попытался запустить модульные тесты с помощью команды dotnet test, некоторые из тестов не прошли.

Затем я воспроизвел это локально, запустив dotnet build и dotnet test в командной строке.

Мы используем NCrunch для отслеживания изменений кода в реальном времени, и у него тоже не было проблем с выполнением модульных тестов.

Есть ли способ заставить Visual Studio использовать инструменты сборки .NET CLI (dotnet) для приложений .NET Core, чтобы избежать различий между msbuild и dotnet в будущем?

1 Ответ

0 голосов
/ 30 января 2019

Visual Studio содержит сборку MSBuild .NET Framework, которая имеет небольшие отличия от версии MSBuild .NET Core (в первую очередь некоторые дополнительные функции, которые используют другие типы проектов, а также работают на .NET Framework вместо .NET Core).

Эта версия MSBuild загружает задачи и цели сборки на основе наличия и содержимого файла global.json в иерархии каталогов проекта, а также предварительных настроек внутри VS.

.NETCore CLI всегда загружает цели / задачи, содержащиеся в нем.

Теоретически любые проблемы со сборкой, возникающие из-за этих различий, должны решаться путем обеспечения совместимости целей и задач с обеими версиями на основе переменных типа $(MSBuildRuntimeType) (значенияCore, Mono или Full).

...