关于 .Net Core runtimeconfig 文件说明
在项目的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
|
可兼容的.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 文件说明的更多相关文章
- 使用GDB 追踪依赖poco的so程序,core dump文件分析.
前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...
- gdb调试常用实用命令和core dump文件的生成
1.生成core dump文件的方法: $ ulimit -c //查看是否为0 如果为0 $ ulimit -c unlimited 这样在程序崩溃以后会在当前目录生成一个core.xxx ...
- linux下生成core dump文件方法及设置
linux下生成core dump文件方法及设置 from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...
- linux 下如何打开core dump文件开关
dump文件可以在程序crash时,方便我们查看程序crash的地方和上下文信息.在window下,要能生成dump文件,需要自己编写相应的代码.不过现在网上可以找到相应的代码,只要把它下载后然后加到 ...
- Linux使用笔记: 定制core dump文件的文件名
在开发过程中,当一个Linux程序异常退出时,我们可以通过core文件来分析它异常的详细原因.缺省情况下,Linux在程序异常时不产生core文件,要想让程序异常退出时产生core dump文件,需要 ...
- NET Core静态文件的缓存方式
NET Core静态文件的缓存方式 阅读目录 一.前言 二.StaticFileMiddleware 三.ASP.NET Core与CDN? 四.写在最后 回到目录 一.前言 我们在优化Web服务的时 ...
- NET Core 静态文件及JS包管理器(npm, Bower)的使用
NET Core 静态文件及JS包管理器(npm, Bower)的使用 文章目录 在 ASP.NET Core 中添加静态文件 使用npm管理JavaScript包 使用Bower管理JavaScri ...
- .net core版 文件上传/ 支持批量上传,拖拽以及预览,bootstrap fileinput上传文件
asp.net mvc请移步 mvc文件上传支持批量上传,拖拽以及预览,文件内容校验 本篇内容主要解决.net core中文件上传的问题 开发环境:ubuntu+vscode 1.导入所需要的包:n ...
- .Net Core 图片文件上传下载
当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. ...
随机推荐
- 动态规划(1)——最长子序列(LCS)问题
最长子序列问题:从中找出最长的字符序列,比如: cnblogs和belong.这两个字符串的最长子序列就是blog. 动态规划:通过分解大问题,不断的将大问题变成小问题,最终整合所有解,得出最优解(和 ...
- python 3.5学习笔记(第五章)
本章内容 1.什么是模块 2.模块的导入方法 3.搜索路径 4.重要标准库 一.什么是模块 1.模块本质上是一个以.py 结尾的python文件,包含了python对象定义和python语句. 2.模 ...
- C#3.0新增功能06 对象和集合初始值设定项
连载目录 [已更新最新开发文章,点击查看详细] 使用 C# 可以在单条语句中实例化对象或集合并执行成员分配. 对象初始值设定项 使用对象初始值设定项,你可以在创建对象时向对象的任何可访问字段或属 ...
- [leetcode] 64. Minimum Path Sum (medium)
原题 简单动态规划 重点是:grid[i][j] += min(grid[i][j - 1], grid[i - 1][j]); class Solution { public: int minPat ...
- FAIRR
FAIRR 在进行一项工作时需要注意学习.应用和改进已有信息和成果,可参考FAIRR原则: Find existing info and result, Add to and Improve it, ...
- python基础知识练习题一
1.执行Python脚本的两种方式 1.在计算机终端(运行cmd),输入安装的Python路径,然后输入Python脚本的路径,回车. 2.直接运行python 2.简述位.字节的关系. 1字节 = ...
- 7月新的开始 - LayUI的基本使用 - Tab选项卡切换显示对应数据
LayUI tab选项卡+page展示 要求:实现tab选项卡改变的同时展示数据也跟着改变 实现条件: 1. 选项卡 [官网 – 文档/示例 – 页面元素 – 选项卡] 2.数据表格 [官网 – 文档 ...
- ArchSummit分享 | 高德地图App架构演化与实践
讲师介绍 郝仁杰,高德地图无线开发专家.在7月13日落幕的2019年ArchSummit峰会上就高德地图近几年的App架构演化和实践进行了分享. 背景概述 高德是国内领先的数字地图内容.导航和位置服务 ...
- Qt Socket 收发图片——图像拆包、组包、粘包处理
之前给大家分享了一个使用python发图片数据.Qt server接收图片的Demo.之前的Demo用于传输小字节的图片是可以的,但如果是传输大的图片,使用socket无法一次完成发送该怎么办呢?本次 ...
- 并发编程(3)——ThreadPoolExecutor
ThreadPoolExecutor 1. ctl(control state) 线程池控制状态,包含两个概念字段:workerCount(线程有效数量)和runState(表示是否在运行.关闭等状态 ...