如何在发布.NET 4.7.2 SDK风格项目时使用--no-restore参数
解决方案
这个错误的核心原因是:restore步骤没有生成针对net472/win-x64的资产信息,而发布时指定了--arch x64(对应runtime identifier win-x64)且用了--no-restore,导致发布过程找不到匹配的目标资产。
你有两种可行的解决方式:
方式一:在restore步骤指定runtime identifier
修改Azure DevOps流水线的restore任务,添加--runtime win-x64参数,让restore过程生成包含该runtime的资产文件:
- task: DotNetCoreCLI@2 inputs: command: 'restore' projects: 'DotnetApp.sln' feedsToUse: 'select' arguments: '--runtime win-x64'
这样restore会生成包含net472/win-x64的project.assets.json,后续发布用--no-restore就能正常找到对应目标了。
方式二:在项目文件中预先声明RuntimeIdentifiers
直接修改你的.NET 4.7.2项目文件,添加RuntimeIdentifiers属性,指定需要的runtime:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net472</TargetFramework> <RuntimeIdentifiers>win-x64</RuntimeIdentifiers> </PropertyGroup> </Project>
这种方式下,默认的restore步骤会自动包含声明的runtime对应的资产信息,不需要修改流水线的restore参数,发布时用--no-restore也能正常执行。
两种方式任选其一即可,本质都是让restore过程生成包含win-x64的资产文件,匹配发布时指定的架构参数。
内容的提问来源于stack exchange,提问作者Mathias F
相关产品推荐
相关产品推荐

