首页 > 解决方案 > Dotnet-core 默认为 2.0 框架 ubuntu

问题描述

我正在集成 ac# 项目以将 AWS codebuild 与 ubuntu linux 操作系统一起使用。所有目标框架都是 3.1。出于某种原因,在 AWS codebuild 上运行它时,它会寻找 2.0?当点击链接时,它抛出解决微软明确声明使用 3.1 的错误

我曾尝试在 .csproj 中使用TargetFrameworkRuntimeFrameWork<TargetFramework>netcoreapp3.1</TargetFramework> <RuntimeFrameworkVersion>3.0.*</RuntimeFrameworkVersion>

我什至还创建了一个 global.json

   {
       "sdk": {
        "version": "3.1.5",
        "rollForward": "latestFeature"
     }
    }

我的构建命令是

dotnet restore
dotnet lambda package --configuration release --framework netcoreapp3.1 --output-package bin/release/netcoreapp3.1/foo-bar.zip

我得到的错误仍然是:

The framework 'Microsoft.NETCore.App', version '2.0.0' was not found.
  - The following frameworks were found:
      3.1.5 at [/root/.dotnet/shared/Microsoft.NETCore.App]

You can resolve the problem by installing the specified framework and/or SDK.

The specified framework can be found at:
  - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=2.0.0&arch=x64&rid=ubuntu.18.04-x64

为什么它继续尝试用 dotnet core 2.0 构建?我在 Mac 上使用 Visual Studio 代码,并在我的 Mac 上使用相同的构建命令,在 3.1 中正确构建,没有抛出错误。

标签: c#asp.netamazon-web-services.net-coreaws-codebuild

解决方案


对于可能遇到此错误的其他任何人。于是四处挖掘,我发现了 AWS 的一篇博文。

在您项目的 .csproj 文件中,有对以下内容的引用:

<DotNetCliToolReference Include="Amazon.Lambda.Tools" Version="2.2.0" />

从 dotnet 2.1 开始,AWS 现在已转向全局工具,不再支持 cli 引用。

因此,他们建议您删除DotNetCliToolReference.csproj 中的行并从 nuget 全局安装这些工具。您不再需要引用它们,因为它们现在是全局的。

如果您使用的是 dotnet 3.1 并在 .csproj 中有该引用并使用 linux / codebuild 它将自动使用该引用而不是可能安装的任何全局引用。

所以删除这一行,然后在 buildspec.yml 中使用命令安装Amazon.Lambda.Toolsnuget 包,将解决错误。

这是解释这些更改的 AWS 博客文章。

https://aws.amazon.com/blogs/developer/net-core-global-tools-for-aws/


推荐阅读