在项目的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. mybatis学习(五)(动态mybatis(多条件查询))

    有时候要查询条件是多条件的,尤其是使用mybatis的时候如何创建sql语句呢? 这里mybatis有自己的办法,如下: 案例:通过传入map,根据map里面的数据来查询 mapper配置如下: &l ...

  2. Maven(一)Maven 的概念和安装

    Maven 的概念和安装 Maven 是什么 首先 Maven 肯定是一个造福人类的好东西,它可以省去我们构建项目中引入 jar 包时的麻烦,还有利于项目的模块化开发等等等好处.在如今项目中大体都是使 ...

  3. 细说Ansible主机清单inventory

    Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. Ansible系列博文直达链接:Ansible入门系列 前言 关于Ansible是 ...

  4. 在dotnet core实现类似crontab的定时任务

    前段需要在业务中实现某些时间段的简单定时任务,类似crontab的调度,因为业务会放在docker中,所以不想用直接用crontab,在网上搜了一下,发现一个开源的实现 Pomelo.AspNetCo ...

  5. [leetcode] #112 Path Sum (easy)

    原题链接 题意: 给定一个值,求出从树顶到某个叶(没有子节点)有没有一条路径等于该值. 思路: DFS Runtime: 4 ms, faster than 100.00% of C++ class ...

  6. javascript基础学习第三天

    ☞ 命名法: 小驼峰命名法 和 大驼峰命名法(帕斯卡命名法) 变量命名规则:遵循小驼峰命名法 [变量名第一个字母小写后面每一个单词的首字母大写] var userNameAge; 函数命名规则:遵循帕 ...

  7. spring使用thymeleaf

    一.spring使用thymeleaf做解析器其实很简单,这是基于xml配置的方式 <?xml version="1.0" encoding="UTF-8" ...

  8. macvtap使用教程

    kubernetes一键安装 macvtap是虚拟机网络虚拟化常用的一种技术,当然容器也可以用. MACVTAP 的实现基于传统的 MACVLAN. 和 TAP 设备一样,每一个 MACVTAP 设备 ...

  9. ASP.NET Core - 实现自定义WebApi模型验证

    Framework时代 在Framework时代,我们一般进行参数验证的时候,以下代码是非常常见的 [HttpPost] public async Task<JsonResult> Sav ...

  10. 史上最全存储引擎、索引使用及SQL优化的实践

    史上最全存储引擎.索引使用及SQL优化的实践 1 MySQL的体系结构概述 2. 存储引擎 2.1 存储引擎概述 2.2 各种存储引擎特性 2.2.1 InnoDB 2.2.2 MyISAM 3. 优 ...