VSTS CI - сбой сборки ASP.NET Core 1.1 - Microsoft.Build.Utilities.v4.0 не найден

Я настроил CI для своего проекта ASP.NET Core 1.1, который использует Azure AD B2C (в этом примере - https://github.com/Azure-Samples/active-directory-b2c-dotnetcore-webapp). Итак, вот что у меня есть в файле .csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework>
    <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
    <PreserveCompilationContext>true</PreserveCompilationContext>
  </PropertyGroup>

  <PropertyGroup>
    <PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
  </PropertyGroup>

  <ItemGroup>
...
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="BuildWebCompiler" Version="1.11.326" />
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Rewrite" Version="1.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Session" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
    <PackageReference Include="Microsoft.Identity.Client" Version="1.1.0-preview" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.2" />
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
  </ItemGroup>

</Project>

Когда я захожу в VSTS, я вижу следующий журнал с ошибками:


Начало: Сборка

******************************************************************************

Задача: .NET Core Описание: Сборка, тестирование и публикация с помощью командной строки dotnet core. Версия: 1.0.2 Автор: Microsoft Corporation

Справка: Дополнительная информация

Сборка "C: \ Program Files \ dotnet \ dotnet.exe" d: \ a \ 1 \ s \ MMLServices \ MMLServices.csproj - выпуск конфигурации Microsoft (R) Build Engine версии 15.1.1012.6693 Авторские права (C) Microsoft Corporation. Все права защищены.

C: \ Users \ buildguest.nuget \ packages \ buildwebcompiler \ 1.11.326 \ build \ BuildWebCompiler.targets (15,9): error MSB4062: не удалось загрузить задачу «WebCompiler.CompilerBuildTask» из сборки C: \ Users \ buildguest.nuget \ packages \ buildwebcompiler \ 1.11.326 \ build .. \ tools \ WebCompiler.exe. Не удалось загрузить файл или сборку Microsoft.Build.Utilities.v4.0, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a. Система не может найти указанный файл. Убедитесь, что объявление правильное, что сборка и все ее зависимости доступны и что задача содержит открытый класс, реализующий Microsoft.Build.Framework.ITask. [d: \ a \ 1 \ s \ MMLServices \ MMLServices.csproj]

СБОЙ при сборке.

C: \ Users \ buildguest.nuget \ packages \ buildwebcompiler \ 1.11.326 \ build \ BuildWebCompiler.targets (15,9): error MSB4062: не удалось загрузить задачу «WebCompiler.CompilerBuildTask» из сборки C: \ Users \ buildguest.nuget \ packages \ buildwebcompiler \ 1.11.326 \ build .. \ tools \ WebCompiler.exe. Не удалось загрузить файл или сборку Microsoft.Build.Utilities.v4.0, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a. Система не может найти указанный файл. Убедитесь, что объявление правильное, что сборка и все ее зависимости доступны и что задача содержит открытый класс, реализующий Microsoft.Build.Framework.ITask. [d: \ a \ 1 \ s \ MMLServices \ MMLServices.csproj] 0 Предупреждение (я) 1 Ошибка (я)

Истекшее время 00: 00: 03.66 Ошибка: C: \ Program Files \ dotnet \ dotnet.exe не удалось с кодом возврата: 1 Ошибка команды Dotnet с ненулевым кодом выхода в следующих проектах: d: \ a \ 1 \ s \ MMLServices \ MMLServices.csproj

Итак, как я могу это исправить?

ОБНОВЛЕНИЕ:

Добавил debug=true, вот лог после этого (задача публикации):

2017-06-20T15: 23: 36.6048010Z [команда] «C: \ Program Files \ dotnet \ dotnet.exe» опубликовать d: \ a \ 1 \ s \ MMLServices \ MMLServices.csproj - выпуск конфигурации - вывод d: \ a \ 1 \ a \ MMLServices 2017-06-20T15: 23: 36.7748032Z Microsoft (R) Build Engine версии 15.1.1012.6693 2017-06-20T15: 23: 36.7758030Z Авторские права (C) Microsoft Corporation. Все права защищены. 2017-06-20T15: 23: 36.7758030Z 2017-06-20T15: 23: 37.3732835ZC: \ Users \ buildguest.nuget \ packages \ buildwebcompiler \ 1.11.326 \ build \ BuildWebCompiler.targets (15,9): ошибка MSB4062: Не удалось загрузить задачу «WebCompiler.CompilerBuildTask» из сборки C: \ Users \ buildguest.nuget \ packages \ buildwebcompiler \ 1.11.326 \ build .. \ tools \ WebCompiler.exe. Не удалось загрузить файл или сборку Microsoft.Build.Utilities.v4.0, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a. Система не может найти указанный файл. Убедитесь, что объявление правильное, что сборка и все ее зависимости доступны и что задача содержит открытый класс, реализующий Microsoft.Build.Framework.ITask. [d: \ a \ 1 \ s \ MMLServices \ MMLServices.csproj] 2017-06-20T15: 23: 37.3943585Z ## [debug] rc: 1 2017-06-20T15: 23: 37.3943585Z ## [отладка] успешно : false 2017-06-20T15: 23: 37.3973597Z ## [ошибка] Ошибка: C: \ Program Files \ dotnet \ dotnet.exe не удалось с кодом возврата: 1 2017-06-20T15: 23: 37.3973597Z ## [отладка ] Обработано: ## vso [task.issue type = error;] Ошибка: C: \ Program Files \ dotnet \ dotnet.exe не удалось с кодом возврата: 1 2017-06-20T15: 23: 37.4003593Z ## [debug] task результат: Ошибка 2017-06-20T15: 23: 37.4003593Z ## [ошибка] Команда Dotnet завершилась неудачно с ненулевым кодом выхода в следующих проектах: d: \ a \ 1 \ s \ MMLServices \ MMLServices.csproj 2017-06- 20T15: 23: 37.4003593Z ## [отладка] Обработано: ## vso [task.issue type = error;] Команда Dotnet завершилась неудачно с ненулевым кодом выхода в следующих проектах: d: \ a \ 1 \ s \ MMLServices \ MMLServices.csproj 2017-06-20T15: 23: 37.4034692Z ## [отладка] Обработано: ## vso [task.complete result = Failed;] Команда Dotnet завершилась ошибкой с ненулевым кодом выхода в следующих проектах: d: \ a \ 1 \ s \ MMLServi ces \ MMLServices.csproj 2017-06-20T15: 23: 37.4073330Z ## [раздел] Окончательная обработка: публикация


person alvipeo    schedule 19.06.2017    source источник


Ответы (2)


Проблема связана с сборкой пакета BuildWebCompiler. Вместо этого вы можете использовать задачу Visual Studio Build:

  1. Удалить задачу сборки .NET Core
  2. Добавить задачу сборки Visual Studio (Решение: ***. Sln; Версия Visual Studio: Visual Studio 2017)

Обновлять:

Что касается публикации, вы можете выполнить следующие действия (нельзя использовать dotnet publish):

  1. Создайте профиль публикации пакета веб-развертывания в Visual Studio и добавьте его в систему управления версиями.

Образец:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>Package</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <PublishFramework>netcoreapp1.1</PublishFramework>
    <ProjectGuid>6ecb453c-aea3-44af-8185-059fbac7b56c</ProjectGuid>
    <DesktopBuildPackageLocation>E:\yy\WebApp-OpenIDConnect-DotNet.zip</DesktopBuildPackageLocation>
    <PackageAsSingleFile>true</PackageAsSingleFile>
    <DeployIisAppPath>Default Web Site/tt</DeployIisAppPath>
    <PublishDatabaseSettings>
      <Objects xmlns="" />
    </PublishDatabaseSettings>
  </PropertyGroup>
</Project>
  1. Удаление задач .NET Core (например, публикация, сборка)
  2. Укажите эти аргументы MSBuild для задачи сборки Visual Studio

:

/p:DeployOnBuild=true /p:PublishProfile=[publish profile];DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp-OpenIDConnect-DotNet.zip"
person starian chen-MSFT    schedule 19.06.2017
comment
Это не помогло. То же самое. - person alvipeo; 19.06.2017
comment
@alvipeo Можете ли вы поделиться подробным журналом сборки в OneDrive? (установите для system.debug значение true ›queue build› share log files) С другой стороны, можете ли вы воспроизвести эту проблему в новом проекте? Если да, вы также можете поделиться этим проектом в OneDrive. - person starian chen-MSFT; 20.06.2017
comment
Если хотите, я могу предоставить вам доступ к моему VSTS. Напишите мне ... есть ли личное общение на GitHub? - person alvipeo; 20.06.2017
comment
@alvipeo Лучше делиться журналом сборки и простым проектом напрямую. - person starian chen-MSFT; 20.06.2017
comment
просто чтобы прояснить - где вы хотите, чтобы я установил этот 'set system.debug в true'? - person alvipeo; 20.06.2017
comment
@alvipeo Это переменная (Открытое определение сборки ›Переменные) - person starian chen-MSFT; 20.06.2017
comment
Какой у вас акк на GitHub? Я подготовил закрытое репо. - person alvipeo; 20.06.2017
comment
или учетная запись MS, чтобы я мог добавить вас в свой VSTS - person alvipeo; 20.06.2017
comment
@alvipeo Вместо этого, используя задачу Visual Studio Build для публикации, я обновил свой ответ. - person starian chen-MSFT; 21.06.2017
comment
хорошо, этот почти сработал. Он построил проект, но Release потерпел неудачу, потому что не смог найти пакет. Так как я могу это указать? - person alvipeo; 21.06.2017
comment
@alvipeo Вам необходимо опубликовать файлы, опубликованные в Интернете (например, zip), в артефакт. 1. Добавьте артефакты публикации в определение сборки (путь публикации: $ (build.artifactstagingdirectory)). 2. Добавьте задачу развертывания службы приложений Azure в определение выпуска (пакет или папка: $ (System.DefaultWorkingDirectory) ***. Zip; установите флажок «Опубликовать с использованием веб-развертывания») - person starian chen-MSFT; 22.06.2017
comment
Я пробовал это, но вот в чем дело - Построение решения успешно, и я вижу этот параметр для MSBuild: «DesktopBuildPackageLocation = d: \ a \ 1 \ a \ MMLServices.zip». но в задаче «Опубликовать артефакт» говорится, что «[предупреждение] Каталог 'd: \ a \ 1 \ a' пуст. Ничего не будет добавлено для сборки артефакта "падение". Так что его удаляют? - person alvipeo; 23.06.2017
comment
@alvipeo Какой код у вашего профиля публикации? С другой стороны, вы можете поделиться файлами подробных журналов в OneDrive. - person starian chen-MSFT; 26.06.2017
comment
Вот журнал - inus.blob.core.windows.net/pub/ - person alvipeo; 28.06.2017
comment
@alvipeo Укажите любую платформу процессора и конфигурацию выпуска для задачи сборки Visual Studio (вы можете использовать $ (BuildPlatform) и $ (BuildConfiguration), затем установите значения на вкладке переменных) - person starian chen-MSFT; 28.06.2017
comment
Это там. Ничего не менять. - person alvipeo; 28.06.2017
comment
@alvipeo Судя по журналу сборки, вы используете отладку, любой процессор. Измените отладку на выпуск. https://1drv.ms/i/s!AresBGZVYryjhS8qbqsrHQnw3zrY и https://www.youtube.com/watch?v=6qbqsrHQnwd1 .ms / i / s! AresBGZVYryjhS7QApCdTKytjWaF "rel =" nofollow noreferrer "> 1drv.ms/i/s!AresBGZVYryjhS7QApCdTKytjWaF - person starian chen-MSFT; 29.06.2017
comment
@alvipeo. Вы можете переопределить конфигурацию и платформу профиля публикации, используя следующие аргументы msbuild: / p: DeployOnBuild = true /p:PublishProfile=2mls_cd;DesktopBuildPackageLocation=$(build.artifactstagingContext; LastUsedPlatform = $ (BuildPlatform) - person starian chen-MSFT; 29.06.2017
comment
Я не знаю, ребята, называйте меня дураком. Но я вижу, что этот 'Каталог' d: \ a \ 1 \ a 'пуст. Ничего не будет добавлено для сборки артефакта «падение». в журнале :( Но сборка прошла успешно - person alvipeo; 29.06.2017
comment
@alvipeo Использование этого REST API, чтобы получить определение сборки и поделиться результатом в OneDrive. С другой стороны, попробуйте это с / p: DeployOnBuild = true / p: PublishProfile = 2mls_cd; DesktopBuildPackageLocation = $ (каталог b‌ uild.artifactstaging‌) \ MMLServic‌ es.zip; LastUsedBuil‌ dConfiguration = $ (Bu‌ ildConfiguration) ; L‌ astUsedPlatform = $ (B‌ uildPlatform) - person starian chen-MSFT; 30.06.2017
comment
Здесь - inus.blob.core.windows.net/pub/. Изменил некоторые личные данные, не хочу раскрывать свой адрес электронной почты и доменные имена. - person alvipeo; 30.06.2017
comment
@alvipeo На основе файла JSON определения сборки вы не указываете Платформа и конфигурация для задачи Visual Studio Build, закройте Internet Explorer и снова откройте его, затем снова проверьте платформу и конфигурацию. - person starian chen-MSFT; 03.07.2017
comment
Пожалуйста, дайте мне один день, я слишком занят. - person alvipeo; 05.07.2017
comment
Хорошо, я удалил это определение сборки и выбрал VS2017 Core, и теперь все работает! - person alvipeo; 08.07.2017

хорошо, я удалил это определение сборки и добавил новое - на этот раз с шаблоном ASP.NET Core (.NET Framework), и все сработало.

person alvipeo    schedule 10.07.2017