關於 .Net Core runtimeconfig 文件說明

来源:https://www.cnblogs.com/wxmayifei/archive/2019/08/22/11394038.html
-Advertisement-
Play Games

在項目的bin\debug\netcoreapp${Version}下麵能夠找到這個${AppName}.runtimeconfig.json文件,簡單來說,它就是用來定義應用程式所用的共用框架(.Net Core App)以及運行時選項 的一個文件。 一個簡單的例子 1、用來決定以哪個版本的.ne ...


  在項目的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;

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、概述 1. 什麼是代理 我們大家都知道微商代理,簡單地說就是代替廠家賣商品,廠家“委托”代理為其銷售商品。關於微商代理,首先我們從他們那裡買東西時通常不知道背後的廠家究竟是誰,也就是說,“委托者”對我們來說是不可見的;其次,微商代理主要以朋友圈的人為目標客戶,這就相當於為廠家做了一次對客戶群體的 ...
  • 本篇概述==> 數組(依舊只敘述與C++不同的地方,或者一些應用方法例子,畢竟語言是共通的,多了也是廢話.jpg) 一,如果創建一維數組,二維數組,以及 N維數組(以此類推)呢 二,數組的一些方法(排序,複製.......) 1. 增強型 For 迴圈 用來取值,不能修改數組裡的值,相當於 普通 f ...
  • 一. 函數式編程 Java8所有的新特性基本基於函數式編程的思想,函數式編程的帶來,給Java註入了新鮮的活力。 下麵來近距離觀察一下函數式編程的幾個特點: 函數可以作為變數、參數、返回值和數據類型。 基於表達式來替代方法的調用 函數無狀態,可以併發和獨立使用 函數無副作用,不會修改外部的變數 函數 ...
  • 可能你是第一次聽說TomatoLog,沒關係,我可以從頭告訴你,通過瞭解番茄日誌,希望能幫助有需要的朋友,番茄日誌處理將大大降低你採集、分析、處理日誌的過程。 ...
  • 非空引用類型——C 8.0 原文地址:https://devblogs.microsoft.com/dotnet/try out nullable reference types/?utm_source=vs_developer_news&utm_medium=referral 該新增的特性最關鍵的 ...
  • 源碼: ...
  • 源碼: ...
  • 簡介 Socean.RPC是一個.Net下的高性能RPC框架,框架以高性能、高穩定性為目標,底層基於socket,代碼簡潔,總代碼量大約在2000行,無第三方庫引用,框架性能較高,在雙核i5筆記本上可達10w+每秒的處理量,支持10000長連接消息發送(每秒發10個短消息),均穩定運行,記憶體和cpu ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...