在项目的bin\debug\netcoreapp${Version}下面能够找到这个${AppName}.runtimeconfig.json文件,简单来说,它就是用来定义应用程序所用的共享框架(.Net Core App)以及运行时选项 的一个文件。

一个简单的例子

{
"runtimeOptions": {
"tfm": "netcoreapp2.2",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "2.2.0"
}
}
}

1、用来决定以哪个版本的.net core 来启动应用程序的参数

runtimeconfig.json

{
"runtimeOptions": {
"framework": {
"name": "Microsoft.AspNetCore.App",
"version": "2.2.0" //指的是可运行的最低版本
}
}
}

.csproj 文件中

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" />
</ItemGroup>

覆盖最小值(不更改文件)的方法是使用dotnet exec --fx--version

到.Net Core >= 3.0 的时候, 可以使用多个共享框架,并且不再作为Nuget包引用,原先做为Nuget包显示,但实际上并不由Nuget来管理,有可能是开发团队设计上的一个失误。

runtimeconfig.json

{
"runtimeOptions": {
"frameworks": [
{
"name": "Microsoft.AspNetCore.App",
"version": "3.0.0"
},
{
"name": "Microsoft.WindowsDesktop.App",
"version": "3.0.0"
}
]
}
}

.csproj 文件中

<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<FrameworkReference Include="Microsoft.WindowsDesktop.App" />
</ItemGroup>

在.Net Core 3.0 会自动在更高的版本上运行

默认情况下, 会自动匹配主要和次要版本号,在其中找到最高的版本来运行,但如果找不到的话,它就有可能会去找更高的版本来运行,也可以回退以适应缺少特定运行时环境,下面的rollForward选项可以配置策略,在 这儿 可以找到一些说明

runtimeconfig.json

{
"runtimeOptions": {
"rollForward": "Major"
}
}

rollForward 可用的值

LatestPatch  前滚到最高的补丁版本,但这会禁用次要版本前滚
Minor 

默认使用的值,如果缺少请求的次要版本,请前滚到最低的较高次要版本;

如果存在请求的次要版本,则使用 LatestPatch 策略。

Major 

如果请求主要版本缺失,则前滚至最低的较高主要版本和最低次要版本。

如果存在请求的主要版本,则使用 Minor 策略。

LatestMinor 即使请求的次要版本存在,也可以前滚到最高次要版本。
LatestMajor  即使请求主要版本存在,也可以前滚到最高主要和最高次要版本。
Disable 

不要向前滚动,仅绑定到指定的版本,不建议将此策略用于正常用途,

因为它禁用前滚到最新修补程序的功能,建议仅用于测试。

在.NET Core 3.0之前,默认情况下会使用安装在计算机上的最高补丁版本的 .Net Core 运行,可以使用如下配置来禁用

注意,此配置在.Net Core 3.0之后已经被废弃

runtimeconfig.json

{
"runtimeOptions": {
"applyPatches": false
}
}

在.NET Core 3.0之前,如果在计算机上找不适合的 .Net Core 版本(匹配主要和次要版本号,默认情况下最高补丁版本),他有可能会使用计算机上安装的最新版本,通过以下配置来控制

注意,此配置在.Net Core 3.0之后已经被废弃

runtimeconfig.json

  {

  "runtimeOptions": {
"rollForwardOnNoCandidateFx": 1
}
}

举个例子说明下,如果当前 .Net Core Version = 2.10

rollForwardOnNoCandidateFx的值
可兼容的.Net Core版本
0  >=2.1.0, < 2.2.0
1

默认的

>=2.1.0, < 3.0.0

2 >=2.1.0

详细说明可参考这篇文章 Roll Forward On No Candidate Fx

2:运行时包存储区

这是包在磁盘上的存储目录(通常情况下,在 macOS/Linux 上是 /usr/local/share/dotnet/store,在 Windows 上是 C:/Program Files/dotnet/store)

runtimeconfig.json

{
"runtimeOptions": {
"tfm": "netcoreapp2.1" //tfm: target framework
}
}

.csproj

<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>

3:从其他地方加载Assembly的路径(类似于PrivatePath)

runtimeconfig.json

{
"runtimeOptions": {
"additionalProbingPaths": [
"D:\\Project\\XXXX"
]
}
}

.csproj

<ItemGroup>
<AdditionalProbingPath Include="D:\Project\XXX" />
</ItemGroup>

.csproj只会影响到runtimeconfig.dev.json,这个文件只会在开发的时候有用,到生产环境无效了,这儿要注意

4:运行时设置

这是一个Key Value 键值对的设置,可以用来配Thread Pool Size, AppDomain ,Globalization 等的行为 ,详细可以参考 CLR-Configuration-knobs

runtimeconfig.json

{
"runtimeOptions": {
"configProperties": {
"key": "value"
}
}
}

除了Net Core 中已定义的,如果需要,也可以配置一些自定义的项,参考如下

runtimeconfig.json

{
"runtimeOptions": {
"configProperties": {
"DefaultTheme": "blue",
"DefaultLanguage": "zh-CN",
"IsEnableJwt" : true
}
}
}

.csproj

<ItemGroup>
<RuntimeHostConfigurationOption Include="DefaultTheme" Value="blue" />
<RuntimeHostConfigurationOption Include="DefaultLanguage" Value="zh-CN" />
<RuntimeHostConfigurationOption Include="IsEnableJwt" Value="true" />
</ItemGroup>

C# 获取自定义的值

var defaultTheme = System.AppContext.GetData("DefaultTheme") as string;

 

关于 .Net Core runtimeconfig 文件说明的更多相关文章

  1. 使用GDB 追踪依赖poco的so程序,core dump文件分析.

    前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...

  2. gdb调试常用实用命令和core dump文件的生成

      1.生成core dump文件的方法: $  ulimit -c //查看是否为0 如果为0 $   ulimit -c unlimited 这样在程序崩溃以后会在当前目录生成一个core.xxx ...

  3. linux下生成core dump文件方法及设置

    linux下生成core dump文件方法及设置    from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...

  4. linux 下如何打开core dump文件开关

    dump文件可以在程序crash时,方便我们查看程序crash的地方和上下文信息.在window下,要能生成dump文件,需要自己编写相应的代码.不过现在网上可以找到相应的代码,只要把它下载后然后加到 ...

  5. Linux使用笔记: 定制core dump文件的文件名

    在开发过程中,当一个Linux程序异常退出时,我们可以通过core文件来分析它异常的详细原因.缺省情况下,Linux在程序异常时不产生core文件,要想让程序异常退出时产生core dump文件,需要 ...

  6. NET Core静态文件的缓存方式

    NET Core静态文件的缓存方式 阅读目录 一.前言 二.StaticFileMiddleware 三.ASP.NET Core与CDN? 四.写在最后 回到目录 一.前言 我们在优化Web服务的时 ...

  7. NET Core 静态文件及JS包管理器(npm, Bower)的使用

    NET Core 静态文件及JS包管理器(npm, Bower)的使用 文章目录 在 ASP.NET Core 中添加静态文件 使用npm管理JavaScript包 使用Bower管理JavaScri ...

  8. .net core版 文件上传/ 支持批量上传,拖拽以及预览,bootstrap fileinput上传文件

    asp.net mvc请移步 mvc文件上传支持批量上传,拖拽以及预览,文件内容校验 本篇内容主要解决.net core中文件上传的问题  开发环境:ubuntu+vscode 1.导入所需要的包:n ...

  9. .Net Core 图片文件上传下载

    当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. ...

随机推荐

  1. k8s学习 - 概念 - Deployment

    k8s学习 - 概念 - Deployment 有了 ReplicaSet 还需要有 Deployment 的原因是希望有一个控制器能管理部署更新时候的版本控制问题.一个 Deployment 可以管 ...

  2. HttpClient多文件上传代码及普通参数中文乱码问题解决

    该随笔记录了在实际项目中使用HttpClient调用外部api,需上传文件和普通参数的代码. 笔者在使用 HttpClient 调用 http api 接口时,需要服务端上传文件和一些普通参数给 ht ...

  3. https://www.cnblogs.com/M-LittleBird/p/5902850.html

    https://www.cnblogs.com/M-LittleBird/p/5902850.html

  4. UVA10375 选择与除法 Choose and divide 题解

    题目链接: https://www.luogu.org/problemnew/show/UVA10375 分析: 这道题可以用唯一分解定理来做. 什么是唯一分解定理?百度即可,这里也简介一下. 对于任 ...

  5. 【Java中级】(二)集合框架

    2.1.ArraList 1.自增长 容器的容量"capacity"会随着对象的增加,自动增长 只需要不断往容器里增加英雄即可,不用担心会出现数组的边界问题. 2.常用方法 关键字 ...

  6. MVC设计模式与Java Web经典三层架构

    MVC设计模式 MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...

  7. 【JDK】JDK源码分析-ArrayList

    概述 ArrayList 是 List 接口的一个实现类,也是 Java 中最常用的容器实现类之一,可以把它理解为「可变数组」. 我们知道,Java 中的数组初始化时需要指定长度,而且指定后不能改变. ...

  8. 【Spring源码解析】—— 委派模式的理解和使用

    一.什么是委派模式 委派模式,是指什么呢?从字面含义理解,委派就是委托安排的意思,委派模式就是在做具体某件事情的过程中,交给其他人来做,这个事件就是在我的完整链路上的一部分,但是复杂度较高的情况下或者 ...

  9. oracle实战(一)

    一.表空间的创建以及删除 声明:此操作环境为windows,oracle10G 表空间? ORACLE数据库的逻辑单元. 数据库---表空间 一个表空间可以与多个数据文件(物理结构)关联 一个数据库下 ...

  10. 爬虫环境搭建及 scrapy 启动

    创建虚拟环境 C:\Users\Toling>mkvirtualenv article 这个是普通的创建虚拟环境,但是实际开发中可能会使用python2或python3所以我们需要指定开发的环境 ...