深入理解.NET Core的基元(三) - 深入理解runtimeconfig.json

原文:Deep-dive into .NET Core primitives, part 3: runtimeconfig.json in depth
作者:Nate McMaster
译文:深入理解.NET Core的基元(三) - 深入runtimeconfig.json
作者: Lamond Lu

前情回顾

简介

每个.NET Core应用都包含了一个名为xxxx.runtimeconfig.json的文件。这个文件可以用来控制多种配置。大多数的开发人员其实并不太关心这个文件,因为它是由SDK生成的文件,但是我认为它还是值得我们去学习理解一下的。这个文件常用来控制一些不会在Visual Studio中表现出来的配置,例如在使用更高版本的.NET Core运行你的应用程序,调整线程池和垃圾回收等。

文件的作用

从技术上讲,runtimeconfig.json文件并不是必须的,但是由于一些实践性的因素,所以每个真实世界中的.NET Core应用都有持有一个runtimeconfig.json文件。这个文件是可以手动编辑的。与deps.json文件不同,runtimeconfig.json是易于理解的。这个文件的主要作用是定义程序所需的共享框架(只针对FDD - framework-dependency deployment),以及一些其他的运行时选项,我会在后面一一列举。

一个简单的例子

以下是一个最典型的runtimeconfig.json的文件内容。

{
   
  "runtimeOptions": {
   
    "tfm": "netcoreapp2.1",
    "framework": {
   
      "name": "Microsoft.NETCore.App",
      "version": "2.1.0"
    }
  }
}

我已经编写了一个完整结构的runtimeconfig.json文件,如果有兴趣你可以查看https://gist.github.com/natemcmaster/0bdee16450f8ec1823f2c11af880ceeb

runtimeconfig.template.json

在.NET Core中,有一些配置选项,你是不能在项目文件.csproj中设置的。如果你想对这些配置选项进行设置,这里有两种方案,一种是在项目编译之后,手动编辑runtimeconfig.json文件,另外一种是使用runtimeconfig.template.json文件。当然,如果你希望持久化配置, 我还是推荐你使用模板的方式。

当项目构建(build)的时候,SDK会从在.csproj文件的基础上,通过读取模板扩充配置。下面我们就通过简单的几个步骤来使用模板。

  1. 创建一个新项目(dotnet new console -n MyApp

  2. 在当前项目目录中,创建一个名为runtimeconfig.template.json的文件。

  3. 配置文件内容如下

    {
         
       "rollForwardOnNoCandidateFx": 2
    }
    
  4. 执行dotnet build

瞧,仅此而已。现在我们可以查看一下bin/Debug/netacoreapp.21/MyApp.runtimeconfig.json,以确保模板正常工作。

Visual Studio的智能感知

针对Visual Studio编辑器,我已经编写了一个JSON结构,你可以直接使用。你需要做的,只是将如下代码加入到你当前项目的runtimeconfig.template.json文件中即可。

{
   
  "$schema": "https://gist.githubusercontent.com/natemcmaster/0bdee16450f8ec1823f2c11af880ceeb/raw/runtimeconfig.template.schema.json"
}

运行时配置选项

框架、版本、先前滚动机制

.NET Core共享框架支持安装并行版本,因此,当一个.NET Core应用程序启动时候,必须选择一个版本。以下配置选项常用于配置应用应该加载哪些共享框架,以及加载哪个版本的共享框架。

注意:通常来说SDK默认生成的配置就已经够用了,但是有时候我们还是需要更改他们的,以解决.NET Core启动时常见问题。

It was not possible to find any compatible framework version. The specified framework ‘Microsoft.NETCore.App’, version ‘X.Y.Z’ was not found.

共享框架

.NET Core是通过指定共享框架的名称来指定共享框架的。配置中指定的框架版本,是当前应用使用的最低版本。如果你想不通过更改文件覆盖这个最小值配置,唯一的方式是使用dotnet exec --fx-version命令。

在.NET Core 3.0以下版本中,一次只能指定一个共享框架。

JSON

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值