首页 > 解决方案 > 为什么 CloudFoundry 安装多个 .NET Core 版本?

问题描述

出于测试目的,我编写了一个小的 ASP.NET Core Web API 项目,将 .csproj 设置为包含以下内容:

<PropertyGroup>
  <TargetFramework>netcoreapp2.0</TargetFramework>
  <RuntimeFrameworkVersion>2.0.0</RuntimeFrameworkVersion>
</PropertyGroup>

当我将此项目推送到 CF 时,它会按应有的方式安装“dotnet-framework 2.0.0”,但此外它还会尝试安装在我正在使用的 CloudFoundry 环境中不可用的“dotnet-framework 2.0.6”(MindSphere)因此失败了。

为什么 CF 尝试安装多个 .NET Core 版本?那个 2.0.6 来自哪里,或者如何明确地告诉 CloudFoundry buildpack 使用哪个版本?

标签: .net-corecloud-foundrybuildpackmindsphere

解决方案


TIL 项目模板将 .NET Core CLI 扩展添加到 .csproj。NuGet 包管理器无法识别此包,因此很难错过。

但真正的问题是这个包没有绑定到指定的“RuntimeFrameworkVersion”,而是有自己的依赖关系,无论如何都会加载它们。在我的情况下,除了我指定的版本 2.0.0 之外,扩展还依赖于 2.0.6

因为生产中的应用程序不需要添加的 CLI 扩展,所以解决方案是从 .csproj 中删除这一段...

<ItemGroup>
  <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.3" />
</ItemGroup>

推荐阅读