Ошибка сборки Jenkins - отсутствует файл Microsoft.Build.Utilities.Core

Я создал новый проект в Jenkins. Когда я пытаюсь его построить, я получаю следующую ошибку:

«E: \ Jenkins \ workspace \ MWAPIv1 \ My.WebAPIv1.sln» (цель по умолчанию) (1) -> «E: \ Jenkins \ workspace \ MWAPIv1 \ My.WebAPIv1 \ My.WebAPIv1.csproj» (цель по умолчанию) ( 2) -> (Цель CoreCompile) -> C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.CSharp.targets (316,9): ошибка MSB4062: задача «Microsoft.CodeAnalysis.BuildTasks.Csc» не удалось загрузить из сборки E: \ Jenkins \ workspace \ MWAPIv1 \ packages \ Microsoft.Net.Compilers.2.2.0 \ build .. \ tools \ Microsoft.Build.Tasks.CodeAnalysis.dll. Не удалось загрузить файл или сборку Microsoft.Build.Utilities.Core, Version = 14.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a или одну из его зависимостей. Система не может найти указанный файл. Убедитесь, что объявление правильное, что сборка и все ее зависимости доступны и что задача содержит открытый класс, реализующий Microsoft.Build.Framework.ITask. [E: \ Jenkins \ workspace \ MWAPIv1 \ My.WebAPIv1 \ My.WebAPIv1.csproj]

В проекте используется NET 4.5.2 Framework.

Другая, возможно, полезная информация: поскольку в ошибке упоминаются отсутствующие библиотеки DLL, я проверил все файлы, включая папку пакетов и содержимое, в SVN, но это не помогло. Я также обновил все пакеты Nuget из VS2015 и проверил наличие обновлений. Конфигурация проекта в Jenkins: MSBuild Version: Microsoft.NET Framework v4.0 MSBuild Build File: My.WebAPIv1.sln Command Line Arguments: /p:VisualStudioVersion=14.0

На моем сервере Jenkins существуют следующие папки:

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ TeamBuild

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v9.0

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0

Есть идеи, как построить мой проект?

Спасибо


person cdsln    schedule 07.06.2017    source источник
comment
вы пробовали предложение Мартина? Его ответ вам помогает? Если нет, сообщите нам последний статус этого вопроса.   -  person Leo Liu-MSFT    schedule 09.06.2017
comment
Решение этого конкретного вопроса для меня заключалось в том, чтобы удалить два пакета nuget: Microsoft.Net.Compilers и Microsoft.CodeDom.Providers.DotNetCompilerPlatform, а затем зарегистрироваться. Затем это нормально было построено в Jenkins. Однако я испытываю ту же проблему с проектом MVC, и удаление вышеуказанных пакетов приводит к тому, что мой проект отображает страницу с ошибкой 500. Я попробую для этого решение Мартинса.   -  person cdsln    schedule 13.06.2017


Ответы (1)


Ваша сборка выполняется с использованием версии MSBuild (4.0.30319), предоставленной платформой .net, которая довольно старая и имеет другую архитектуру, чем ожидает пакет Microsoft.Net.Compilers NuGet, которую вы, похоже, используете для переопределения старых целей сборки для использования более новой компилятор.

Для этого используйте более новую версию MSBuild, например тот, который установлен VS 2015 в C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe (альтернатива: установите и используйте «инструменты сборки для Visual Studio» 2015 или 2017)

person Martin Ullrich    schedule 07.06.2017