Службы командной строки Visual Studio создают .net core 1.1

Я пытаюсь создать проект .net core 1.1 на vsts. Проект разработан в vs2017 и использует csproj вместо project.json. Я попробовал несколько вариантов для создания id на vsts с размещенными агентами (windows и linux).

Я пробовал следующие шаги сборки

Создание Visual Studio

Установите для использования vs 2017, но я получаю предупреждение "Visual Studio version '15.0 'не найден. Поиск последней версии." И затем я получаю ошибки, потому что он не может включать в себя .net core-пакеты.

.NET Core (PREVIEW)

Не могу найти project.json. Когда я установил его для использования файла csproj, он выдает сообщение об ошибке "Тип файла не был распознан"

Шаг создания команды

Я попытался запустить команды с шагами построения команды. "dotnet build" дает ошибку, что он не может найти файл project.json.

Любое здание dotnet 1.1 с csproj на vsts, которое может помочь мне, как это сделать?

Ответы

Ответ 1

В Visual Studio Team Services перейдите в Сборка и выпуск > Сборка и нажмите Изменить для определения сборки, которое вы хотите обновить.

введите описание изображения здесь

Перейдите на вкладку Параметры, измените очередь агента по умолчанию на Hosted VS2017 и сохраните.

Hosted VS2017

Ответ 2

Вы можете загрузить SDK dotnet вручную и запустить dotnet build из командной строки. Так может быть что-то вроде этого:

  • Шаг Inline PowerShell (я использовал Расширение Inline Powershell от Peter Groenwegen):

    Invoke-WebRequest https://go.microsoft.com/fwlink/?linkid=837977 -OutFile $(System.DefaultWorkingDirectory)\dotnet.zip
    
  • Извлечь файлы:

    From: $(System.DefaultWorkingDirectory)\dotnet.zip
    To: $(System.DefaultWorkingDirectory)\dotnet
    
  • Восстановить пакеты:

    $(System.DefaultWorkingDirectory)\dotnet\dotnet.exe restore
    

... и т.д.

Но есть некоторые ограничения - у вас все еще не было .Net Core 1.1, установленного на машине агента сборки, поэтому некоторые функции могут не работать. По крайней мере dotnet test будет терпеть неудачу, потому что для этого требуется соответствующее .Net Core runtime. Возможно, некоторые другие функции.

Ответ 3

распространяющийся на @Nikolay Balakin, ответьте, это правда, что проекты .NET Core с использованием *.csproj пока не поддерживаются.

Вы можете обойти это, установив самое последнее ядро ​​.NET в среду размещенной сборки.

Это позволит запускать dotnet restore, dotnet build, dotnet publish и dotnet test.

Используйте Inline powershell extension для запуска script. Вы можете ссылаться на script или вставлять текст в строку. Я запускаю script, который проверяется в проекте.

введите описание изображения здесь

Кажется, каждая powershell script будет запущена в его собственной среде, поэтому пути и т.д. не будут сохраняться между сценариями, поэтому шаги установки и шаги сборки должны быть объединены в один script.

Вам нужно скопировать установку dotnet script из github и добавьте свои собственные команды сборки в конец.

Я знаю, что это не долгосрочное решение, но мы оправдали его, предположив, что VSTS в скором будущем будет поддерживать файлы *.csproj, и мы преобразуем их в официальную задачу сборки.

Вот пример powershell script, показывающий последнюю строку установки script и команды пользовательской сборки в конце.

...
...
Say "Installation finished"
# this is the end of the downloaded script, add your steps after here.

Say "Running dotnet restore AdminPortal\AdminPortal.csproj"
dotnet restore AdminPortal\AdminPortal.csproj

Say "dotnet publish AdminPortal\AdminPortal.csproj --configuration Release"
dotnet publish AdminPortal\AdminPortal.csproj --configuration Release

Say 'Zipping publish file'

$source = $env:BUILD_REPOSITORY_LOCALPATH
$source = $source + '\AdminPortal\bin\Release\net461\publish'

$destination = $env:BUILD_REPOSITORY_LOCALPATH
$destination = $destination + '\AdminPortal\bin\Release\net461\publish.zip'

Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory($source, $destination)

Say "Publish finished"

dotnet test "AdminPortal.Tests\AdminPortal.Tests.csproj"

Say "Test finished"

exit 0

Ответ 4

В соответствии с этой проблемой проекты .NET Core с использованием файлов *.csproj еще не поддерживаются:

https://github.com/Microsoft/vsts-tasks/issues/3311

", если вы используете размещаемый агент, - тогда инструмент там работает только с файлами project.json"

Я пробовал учебники здесь, но они также выглядят устаревшими (я даже не мог установить tfx-cli на моей машине): http://mattvsts.blogspot.nl/2016/11/start-building-aspnet-core-11-with-tfs.html

Ответ 5

В моем случае у меня есть веб-приложение .NET Core и четыре проекта библиотеки, все они нацелены на полную структуру, так как я использую EF 6.

Я попробовал все предложения здесь, и никто из них не работал. Создание с помощью Visual Studio Build на Hosted Agent 2017 действительно создает проект, но не выводит никаких двоичных файлов. И все вышеперечисленные варианты также создавали, но не генерировали выходные файлы.

Чтение вокруг я нашел, что единственный способ получить выходные файлы - запустить dotnet publish, но это создает ошибку сборки, потому что nuget не восстанавливает наилучшие пакеты, а msbuild не может их найти. После того, как вы устали от попыток заставить его работать в течение целого дня, я случайно включил "Восстановить пакеты Nuget" в задаче VS Buid, и, хотя он говорит, что он устарел, похоже, решил мой isse.