jenkins - 使用 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 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 服务器托管
如果您希望在 Windows 服务器上托管独立应用程序,则可以在服务器上单独安装 IIS 的 ASP.NET Core 模块,而无需安装 .NET Core 运行时。您可以下载 Windows (Server Hosting) 安装程序并从管理员命令提示符运行以下命令: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"
}
}
解决方案
我认为这里有些混乱。.NET Core 由两个几乎独立的组件组成:SDK 和运行时。SDK 用于构建您的代码,运行时需要运行它。
它们的版本不同。例如,最新的 SDK 是 2.1.403,而最新的 Runtime 是 2.1.5。
最新版本的 SDK 可以针对之前发布的任何版本的运行时。因此,2.1.403 SDK 可以构建需要 2.0 或 1.0 才能运行的应用程序。
您可以通过使用该global.json
文件来强制使用特定的 SDK。您需要指定已安装的 SDK 版本。dotnet new globaljson
将生成一些您可以在其中编辑版本的内容。但您不需要这样做。您可以使用最新的 SDK 并通过设置来要求它为较旧的运行时构建TargetFramework
。
如果你做 a 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
. _ 你会不会只是错过了那一步?
推荐阅读
- linux - Qt5 几乎等同于 GTK3 GtkPaned
- reactjs - setInterval 更改元素的类名
- javascript - 忽略单词的行计算器
- vue.js - 如何测试 Vuex 模块中的操作?
- c++ - 此函数是否将新节点添加到链表的末尾?
- windows - 使用 IntelliJ 进行 JVM 分析
- asp.net-core - .Net Core:连接 DB、DAL、User Secret 和 Asp.Net Core 配置的类库
- pandas - 从数据框 Pandas 打印特定的行和特定的列
- git - 即使 .gitignore 中未提及文件扩展名,Visual Studio 2019 或 GIT 也会忽略解决方案中新添加的文件
- oauth - YouTube 授权码交换失败并出现 redirect_uri_mismatch