Dotnet核心默认为2.0框架Ubuntu

时间:2020-08-09 19:18:44

标签: c# asp.net amazon-web-services .net-core aws-codebuild

我正在整合一个c#项目,以将AWS Codebuild与ubuntu linux OS结合使用。所有目标框架均为3.1。出于某种原因,在AWS Codebuild上运行时会寻找2.0?当点击链接时,它会抛出错误以解决错误,Microsoft明确声明使用3.1

我尝试在.csproj中使用 ) TargetFramework RuntimeFrameWork <TargetFramework>netcoreapp3.1</TargetFramework>

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

<RuntimeFrameworkVersion>3.0.*</RuntimeFrameworkVersion>

我的构建命令是

   {
       "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

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

1 个答案:

答案 0 :(得分:1)

对于可能遇到此错误的其他任何人。因此,四处寻找,我找到了AWS的博客文章。

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

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

从dotnet 2.1开始,AWS现在已移至全局工具,不再支持cli参考。

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

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

因此,删除该行,然后使用以下命令在buildspec.yml中使用命令安装Amazon.Lambda.Tools nuget软件包,即可解决该错误。

这是AWS博客文章,介绍了这些更改。

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

相关问题