Создание проекта .NET Core .a с использованием Jenkins всегда ссылается на последнюю установленную версию SDK.

Я запускаю «Создайте проект или решение Visual Studio с помощью MSBuild» в Jenkins для нескольких проектов для создания пакетов nuget.

MSBuild - это последняя версия Visual Инструменты сборки Studio

В проекте используется SDK .NET Core 1.0.4
Company.Core.csproj:

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

  <PropertyGroup>
    <TargetFramework>netcoreapp1.0</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  </PropertyGroup>

</Project>

Однако при выполнении сборки используемая версия SDK всегда является последней версией SDK, установленной на машине (2.x).

C:\Program Files\dotnet\sdk\2.1.400\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(198,5): 
error NETSDK1064: Package Microsoft.CSharp, version 4.0.1 was not found. 
It might have been deleted since NuGet restore. Otherwise, NuGet restore might have only partially completed, which might have been due to maximum path length restrictions. 
[C:\Workspaces\Company.Core\Company.Core.csproj]

После удаления версии 2.1.400 SDK я получаю сообщение об ошибке:

C:\ProgramFiles\dotnet\sdk\1.1.10\Sdks\Microsoft.NET.Sdk\build\Microsoft.PackageDependencyResolution.targets(308,5): 
    error : Assets file 'C:\Workspaces\Company.Core\obj\project.assets.json' not found. Run a NuGet package restore to generate this file. [C:\Workspaces\Company.Core\Company.Core.csproj]

Для поддержки .net Core 1.0.4 использовалась установка . NET Core 1.0.4 и 1.1.1 SDK 1.0.1, следуя инструкциям:

Хостинг Windows Server

Если вы хотите разместить автономные приложения на серверах Windows, модуль ASP.NET Core для IIS можно установить отдельно на серверах без установки среды выполнения .NET Core. . Вы можете загрузить установщик Windows (Server Hosting) и выполнить следующую команду из командной строки администратора:

DotNetCore.1.0.4_1.1.1-WindowsHosting.exe OPT_INSTALL_LTS_REDIST = 0 OPT_INSTALL_FTS_REDIST = 0

Я также добавил RuntimeFrameworkVersion в csproj, что не повлияло.

<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>^

global.json также игнорируется

{
  "sdk": {
    "version": "1.0.4"
  }
}

person BrunoMartinsPro    schedule 10.10.2018    source источник


Ответы (2)


Похоже, вы можете указать версию sdk в файле global.json:

{
  "sdk": {
    "version": "1.0.4"
  }
}

Источник: https://markheath.net/post/switching-between-netcore-sdk-versions

person RQDQ    schedule 10.10.2018

Думаю, тут какая-то путаница. .NET Core состоит из двух практически отдельных компонентов: SDK и среды выполнения. SDK используется для построения вашего кода, и для его запуска требуется среда выполнения.

Версии у них разные. Например, последняя версия SDK - 2.1.403, а последняя среда выполнения - 2.1.5.

Последняя версия SDK может быть нацелена на любую версию среды выполнения, выпущенную до нее. Итак, SDK 2.1.403 может создавать приложения, для работы которых требуется версия 2.0 или 1.0.

Вы можете принудительно использовать конкретный SDK, используя файл global.json. Вам необходимо указать уже установленную версию SDK. dotnet new globaljson создаст то, что вы можете редактировать версии. Но вам не нужно этого делать. Вы можете просто использовать последний SDK и попросить его собрать более старую среду выполнения, установив TargetFramework, как вы это делаете.

Если вы сделаете dotnet restore, останется ли error NETSDK1064: Package Microsoft.CSharp, version 4.0.1 was not found.? Вторая ошибка, Assets file 'C:\Workspaces\Company.Core\obj\project.assets.json' not found. Run a NuGet package restore to generate this file. подтверждает это. project.assets.json создан dotnet restore. Могли ли вы просто пропустить этот шаг?

person omajid    schedule 10.10.2018