Azure Pipeline:dotnet 发布失败 - assets.json 没有“.NETCoreApp,Version=v3.1/win-x64”的目标

Posted

技术标签:

【中文标题】Azure Pipeline:dotnet 发布失败 - assets.json 没有“.NETCoreApp,Version=v3.1/win-x64”的目标【英文标题】:Azure Pipeline: dotnet publish fails - assets.json doesn't have a target for '.NETCoreApp,Version=v3.1/win-x64' 【发布时间】:2021-01-09 12:28:09 【问题描述】:

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

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

在 Azure 管道中 - 在使用上述命令进行发布之前,我必须执行 dotnet restore。在发布时,我必须添加额外的参数 --no-restore,根据微软的建议 here,因为我有私人 nuget 提要。 dotnet publish -c dev -r win-x64 --self-contained true --no-restore

大多数 dotnet 命令(包括构建、发布和测试)都包含 隐式恢复步骤。这将对经过身份验证的提要失败, 即使您在前面的步骤中成功运行了 dotnet restore, 因为前面的步骤将清理它使用的凭据。

要解决此问题,请将 --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>

需要关于这里可能出现什么问题的任何指示吗?

谢谢

【问题讨论】:

您是否尝试添加&lt;RuntimeIdentifier&gt;win-x64&lt;/RuntimeIdentifier&gt; 我猜你机器的操作系统和管道不一样。您按照错误消息中的说明进行操作: Exenetcoreapp3.1Debug;Release;dev;test;pre;prodwin-x64 请检查您的 PlatformTarget。例如:AnyCPU @MarkusMeyer - 成功了!如果您想将其添加为答案,我会将其标记为已接受!谢谢 【参考方案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>

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

【讨论】:

以上是关于Azure Pipeline:dotnet 发布失败 - assets.json 没有“.NETCoreApp,Version=v3.1/win-x64”的目标的主要内容,如果未能解决你的问题,请参考以下文章

如何组织 azure-pipeline.yaml 文件

azure devops 中的 Pipeline 和 Release Pipeline 有啥区别?

如何向 Azure 存储授予对 Azure Pipeline 的 Azure 文件副本的访问权限?

如何从 Azure DevOps Pipeline 读取 Azure 文件共享文件

从 Azure DevOps Pipeline 访问 SQL Server

如何在 Azure Pipeline 上使用 Terraform 将文件上传到 Azure 存储?