Dotnet-core 默认为 2.0 框架 ubuntu
Dotnet-core defaulting to 2.0 framework ubuntu
我正在集成一个 c# 项目以将 AWS codebuild 与 ubuntu linux OS 结合使用。所有目标框架都是 3.1。出于某种原因,当 运行 这个在 AWS codebuild 上寻找 2.0 时?当遵循 link 时它抛出以解决 Microsoft 明确声明使用 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 的博客 post。
在您项目的 .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 博客post。
https://aws.amazon.com/blogs/developer/net-core-global-tools-for-aws/
我正在集成一个 c# 项目以将 AWS codebuild 与 ubuntu linux OS 结合使用。所有目标框架都是 3.1。出于某种原因,当 运行 这个在 AWS codebuild 上寻找 2.0 时?当遵循 link 时它抛出以解决 Microsoft 明确声明使用 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 的博客 post。
在您项目的 .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 博客post。
https://aws.amazon.com/blogs/developer/net-core-global-tools-for-aws/