关于 .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项目下实现文件上传下载接口. ...
随机推荐
- SpringBoot开发案例Nacos配置管理中心
前言 在开发过程中,通常我们会配置一些参数来实现某些功能,比如是否开启某项服务,告警邮件配置等等.一般会通过硬编码.配置文件或者数据库的形式实现. 那么问题来了,如何更加优雅的实现?欢迎来到 Naco ...
- 个人永久性免费-Excel催化剂功能第87波-将批量发送邮件做到极致化,需借力Outlook
在过往的功能中,已经实现过批量发送邮件的功能,但收到的反馈是部分企业邮箱不能用,原因是无解的,因为程序员能找到的公开的类库只能实现一些通用性的场景,太复杂的企业环境可能会失灵.近期认真来学习Outlo ...
- 简单题[期望DP]
也许更好的阅读体验 \(\mathcal{Description}\) 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元.可以随时停止翻牌 ...
- Spring 自动生成getter和setter方法 tostring方法
添加maven依赖 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency& ...
- C#4.0新增功能02 命名实参和可选实参
连载目录 [已更新最新开发文章,点击查看详细] C# 4 介绍命名实参和可选实参. 通过命名实参,你可以为特定形参指定实参,方法是将实参与该形参的名称关联,而不是与形参在形参列表中的位置关联. ...
- 基于 Github 存储附件的 wordpress 插件
前言 插件名称 wp-github-gos, 本插件核心功能使用了 GitHub API 设置页面和核心业务逻辑主要参考插件 wordpress-qcloud-cos 的实现,替换了其中 腾讯云 CO ...
- mysql协议分析2---认证包
主人看到navicat和mysql在那嘻嘻哈哈,眉来眼去的,好不快乐,忽然也想自己写个程序,直接去访问Mysql,虽然现在已经有很多现成的中间件可以直接拿来用了,程序只要负责写sql语句就行了,但是主 ...
- 01-k8s 架构
原文地址:https://github.com/kubernetes/kubernetes/blob/release-1.3/docs/design/architecture.md Kubernete ...
- 【JDK】JDK源码分析-HashMap(1)
概述 HashMap 是 Java 开发中最常用的容器类之一,也是面试的常客.它其实就是前文「数据结构与算法笔记(二)」中「散列表」的实现,处理散列冲突用的是“链表法”,并且在 JDK 1.8 做了优 ...
- logback使用配置
一:logback.xml配置内容如下 <?xml version="1.0" encoding="UTF-8"?> <!-- Copyrig ...