RHEL8系统Jenkins中构建.NET 5应用报NU1101缺失包错误如何解决
解决方案
错误根因
你遇到的NU1101报错是因为RHEL专属的.NET runtime host包默认不在nuget.org官方源上架,你已经通过RPM安装了本地对应的运行时依赖,但构建逻辑默认会尝试从NuGet源拉取对应rhel.8-x64 RID的host包,因此检索失败。
你给dotnet build添加--self-contained参数报未知开关的原因是该参数为dotnet publish命令的专属参数,build阶段不支持该配置项。
解决方法
方案1:修改项目配置强制使用本地运行时,无需从NuGet拉取额外包
编辑Web.csproj文件,在<PropertyGroup>节点内添加以下配置:<SelfContained>false</SelfContained> <!-- 不需要指定RID的话可添加下一行,禁用RID相关的包检索逻辑 --> <DisableImplicitRuntimeIdentifier>true</DisableImplicitRuntimeIdentifier>配置完成后直接执行原有的
dotnet build Web.csproj命令即可正常构建。方案2:调整Jenkins执行命令,直接用publish步骤生成产物
如果你需要直接得到可部署的产物,可将Jenkins中的shell命令替换为:dotnet publish Web.csproj --configuration Release --no-self-contained --output ./publish_output
命令执行完成后,所有构建产物会输出到当前目录的publish_output文件夹下,你可以直接处理该目录的内容即可。
验证操作
构建完成后可执行dotnet ./bin/Release/net5.0/Web.dll命令测试应用是否可以正常启动,确认构建产物可用。
内容的提问来源于stack exchange,提问作者dnmitev
相关产品推荐
相关产品推荐

