【问题标题】:Cloud Build dotnet fails - does not support targeting versionCloud Build dotnet 失败 - 不支持定位版本
【发布时间】:2021-08-04 12:09:49
【问题描述】:

尝试使用 GCP Cloud Build 构建 aspnet 核心代码。

以下yaml

steps:
- name: 'microsoft/dotnet:sdk'
  entrypoint: 'dotnet'
  args: [ 'publish', 'folder/proj.csproj', '-c', 'Release' ]

失败并出现下一个错误:

/usr/share/dotnet/sdk/2.1.816/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(150,5): error NETSDK1045: The current .NET SDK does not support targeting .NET Standard 2.1.  Either target .NET Standard 2.0 or lower, or use a version of the .NET SDK that supports .NET Standard 2.1. [/workspace/folder/common.csproj]
/usr/share/dotnet/sdk/2.1.816/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(137,5): error NETSDK1045: The current .NET SDK does not support targeting .NET Core 3.1.  Either target .NET Core 2.1 or lower, or use a version of the .NET SDK that supports .NET Core 3.1. [/workspace/folder/proj.csproj]

有没有办法支持不同版本的dotnet?

【问题讨论】:

  • 文件 proj.csproj 决定了框架。查找 TargetFrameworkVersion。在某些情况下,您可以更改它。在其他情况下,您必须移植代码以更改框架。

标签: google-cloud-platform google-cloud-build


【解决方案1】:

Cloud Build 仅从某些注册表中提取容器映像,例如 Docker Hub、Container Registry、Artifact Registry 等。在这种情况下,您需要替换脚本中 name 字段中使用的映像。

通过使用microsoft/dotnet:sdk,您的脚本将获得导致不兼容的默认构建。根据错误,它使用 2.1.816 而您的应用程序需要 .NET 3.1。

有了这个,我建议您将microsoft/dotnet:sdk 替换为mcr.microsoft.com/dotnet/sdk:3.1。更多信息请参考Docker Hub Container Image Library

【讨论】:

  • 是的,mcr.microsoft.com/dotnet/sdk:3.1 有效。
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多