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



我正在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 版本始终是计算机上安装的最新 SDK (2.x(。

C:Program Filesdotnetsdk2.1.400SdksMicrosoft.NET.SdktargetsMicrosoft.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:WorkspacesCompany.CoreCompany.Core.csproj]

卸载 2.1.400 SDK 版本后,出现错误:

C:ProgramFilesdotnetsdk1.1.10SdksMicrosoft.NET.SdkbuildMicrosoft.PackageDependencyResolution.targets(308,5): 
error : Assets file 'C:WorkspacesCompany.Coreobjproject.assets.json' not found. Run a NuGet package restore to generate this file. [C:WorkspacesCompany.CoreCompany.Core.csproj]

用于支持 .net Core 1.0.4 的安装是 .NET Core 1.0.4 和 1.1.1SDK 1.0.1,使用说明如下:

Windows Server托管

如果您希望在 上托管独立应用程序 Windows Server,可以安装用于IIS的 ASP.NET 核心模块 单独在服务器上,无需安装 .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"
}
}

看起来您可以在global.json文件中指定 sdk 版本:

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

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

我认为这里有一些混乱。 .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将生成一些内容,您可以在其中编辑版本。但是你不应该需要这样做。您可以只使用最新的 SDK,并通过像您一样设置TargetFramework来要求它为较旧的运行时构建。

如果你做一个dotnet restoreerror NETSDK1064: Package Microsoft.CSharp, version 4.0.1 was not found.还会留下来吗?第二个错误,Assets file 'C:WorkspacesCompany.Coreobjproject.assets.json' not found. Run a NuGet package restore to generate this file.支持这一点。该project.assets.jsondotnet restore创建。你会错过这一步吗?

相关内容

  • 没有找到相关文章