.net-core - 为什么 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 使用哪个版本?
解决方案
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>
推荐阅读
- angular - 如何使用具有相同登录凭据的两个示例 Angular 应用程序实现单点登录
- sparql - ttl 和 SPARQL 中的一对多关系定义-生成嵌套的 GENERATE
- node.js - 如何根据域名配置视图路径?
- android - 在库中使用 Firebase 云消息传递
- facebook - facebook sdk 图形 api v3.1
- java - 在片段和后台运行倒数计时器
- java - Java嵌套列表按流组合,不重复
- spring-boot - Spring Security - 在 Spring Boot 中使用 Active Directory 针对 LDAP 对用户进行身份验证
- splunk - Splunk 如何组合两个查询并得到一个答案
- java - 使用 Pattern & Matcher 的所有重叠模式的索引