使用Jenkins构建.a NET Core项目始终引用最新安装的SDK版本

时间:2018-10-10 14:56:01

标签: jenkins asp.net-core msbuild .net-core continuous-integration

我正在Jenkins上运行“使用MSBuild构建Visual Studio项目或解决方案”,以便多个项目生成nuget包。

使用的MSBuild是最新的Visual Studio Build Tools

项目中使用的.NET Core sdk版本为1.0.4
Company.Core.csproj:

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

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

</Project>

但是,在执行构建时,使用的SDK版本始终是计算机(2.x)上安装的最新SDK。

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 Server,可以安装IIS的ASP.NET Core模块   在服务器上单独安装而不安装.NET Core运行时。您可以   下载Windows(服务器托管)安装程序并运行以下命令   管理员命令提示符下输入命令:

     

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

我还在csproj中添加了RuntimeFrameworkVersion,但没有任何作用。

<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>^

global.json也被忽略

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

2 个答案:

答案 0 :(得分:1)

您似乎可以在global.json文件中指定sdk版本:

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

来源: https://markheath.net/post/switching-between-netcore-sdk-versions

答案 1 :(得分:0)

我认为这里有些混乱。 .NET Core由两个几乎独立的组件组成:SDK和运行时。该SDK用于构建您的代码,并且需要运行时才能运行它。

它们的版本不同。例如,最新的SDK是2.1.403,而最新的运行时是2.1.5。

SDK的最新版本可以针对其之前发布的任何版本的运行时。因此,2.1.403 SDK可以构建需要2.0或1.0才能运行的应用程序。

您可以通过使用global.json文件来强制使用特定的SDK。您需要指定已经安装的SDK版本。 dotnet new globaljson将生成一些内容,您可以在其中编辑版本。但是您不必这样做。您可以通过设置TargetFramework来使用最新的SDK,并要求其为较早的运行时进行构建。

如果您执行dotnet restoreerror 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.jsondotnet restore创建。您可以简单地错过这一步吗?