我有一个 .NetCore 3.1 命令行应用程序。在本地构建和发布时,使用以下命令行完全可以正常工作
dotnet publish -c dev -r win-x64 --self-contained true
在 Azure 管道中 - 在dotnet restore使用上述命令进行发布之前,我必须这样做。在发布时,我必须添加额外的 param --no-restore,根据 Microsoft 的建议,因为我有私人 nuget 提要。
dotnet publish -c dev -r win-x64 --self-contained true --no-restore
大多数 dotnet 命令(包括构建、发布和测试)都包含隐式还原步骤。即使您在较早的步骤中成功运行了 dotnet restore,这对于经过身份验证的提要也会失败,因为较早的步骤将清除它使用的凭据。
要解决此问题,请将 --no-restore 标志添加到 Arguments 文本框。
现在,管道的发布部分已经开始失败并出现错误 -
C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(241,5): error NETSDK1047: Assets file 'MyProject\obj\project.assets.json ' 没有针对 '.NETCoreApp,Version=v3.1/win-x64' 的目标。确保恢复已运行,并且您已在项目的 TargetFrameworks 中包含“netcoreapp3.1”。您可能还需要在项目的 RuntimeIdentifiers 中包含“win-x64”。
我没有使用发布 xml,而是在命令行中指定了上面显示的所有参数。我已经检查了 csproj 是否指定了目标框架
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<Configurations>Debug;Release;dev;test;pre;prod</Configurations>
</PropertyGroup>
需要任何关于这里可能出现问题的指示吗?
谢谢