Azure管道:dotnet发布失败-asset.json没有针对“ .NETCoreApp,Version = v3.1 / win-x64”的目标

时间:2020-09-23 10:12:09

标签: c# azure .net-core azure-pipelines

我有一个.NetCore 3.1命令行应用程序。在本地构建和发布时,使用下面的命令行完全可以正常工作

dotnet publish -c dev -r win-x64 --self-contained true

在Azure管道中-在使用上述命令进行发布之前,我必须做dotnet restore。发布时,我必须按照Microsoft的建议here添加额外的参数--no-restore,因为我有私有的nuget feed。 dotnet publish -c dev -r win-x64 --self-contained true --no-restore

大多数dotnet命令(包括构建,发布和测试)都包含一个 隐式还原步骤。这将无法通过经过验证的供稿, 即使您在较早的步骤中成功运行了dotnet还原, 因为前面的步骤将清除它使用的凭据。

要解决此问题,请在“参数”文本框中添加--no-restore标志。

现在,管道的发布部分已开始失败,并显示以下错误-

C:\ Program Files \ dotnet \ sdk \ 3.1.401 \ Sdks \ Microsoft.NET.Sdk \ targets \ Microsoft.PackageDependencyResolution.targets(241,5):错误NETSDK1047:资产文件'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>

是否需要有关此处可能出问题的指针?

谢谢

1 个答案:

答案 0 :(得分:1)

请按照错误消息中的说明添加RuntimeIdentifier:

<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <Configurations>Debug;Release;dev;test;pre;prod</Configurations>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>

还请检查PlatformTarget。

 <PlatformTarget>AnyCPU</PlatformTarget>

我猜本地机器的操作系统与构建代理不同。