c# - Dotnet-core 默认为 2.0 框架 ubuntu
问题描述
我正在集成 ac# 项目以将 AWS codebuild 与 ubuntu linux 操作系统一起使用。所有目标框架都是 3.1。出于某种原因,在 AWS codebuild 上运行它时,它会寻找 2.0?当点击链接时,它抛出解决微软明确声明使用 3.1 的错误
我曾尝试在 .csproj
中使用TargetFramework
和RuntimeFrameWork
<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 中正确构建,没有抛出错误。
解决方案
对于可能遇到此错误的其他任何人。于是四处挖掘,我发现了 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.Tools
nuget 包,将解决错误。
这是解释这些更改的 AWS 博客文章。
https://aws.amazon.com/blogs/developer/net-core-global-tools-for-aws/
推荐阅读
- indexing - Solr 前缀搜索与罗马数字 - 召回问题
- websocket - 如何修复 Flutter(Dart)WebSocket 上的错误“在收到完整标头之前已关闭连接”
- python - 接收 KeyError:“[Int64Index([ ... dtype='int64', length=1323)] 均不在 [columns] 中”
- python-3.x - 如何循环遍历 tkinter 标签 ['text] 内的字典列表?
- node.js - 试图从频道 ID 获取公会
- javascript - 如何在javascript中正确访问php数组的元素
- prolog - 如何从列表中确定两个数字的总和
- swift - 'UICollectionView 必须使用非零布局参数初始化'?
- c++ - 如何从按钮控件中删除边框并设置复选框背景
- ios - NotificationCenter.default.addObserver(forName:object:queue:using:) 关于返回对象的文档