簡體   English   中英

以編程方式獲取 dotnet 核心運行時的當前運行版本

[英]Programmatically get current running version of dotnet core runtime

我有一個 aspnetcore webapp,我希望它在啟動時將其當前版本以及它運行的 dotnet 核心運行時版本寫入日志。

我想這樣做,因為我的 webapp 在雲中的各種虛擬機上運行,我希望能夠查看所有這些虛擬機的日志,並確保它們都運行相同的 dotnet 核心運行時版本。

我想要的是這樣的東西。

App version 1.0.1 running on dotnet 2.0.6

獲取我的應用程序版本很容易(只是匯編版本),但是,我找不到獲取 dotnet 運行時版本的方法嗎?

我已經看到各種引用Microsoft.DotNet.PlatformAbstractions nuget 包的東西,但這似乎根本沒有給我 dotnet 運行時版本。

還有 System.Environment.Version,但報告4.0.30319.42000“桌面”dotnet 4.6+ 框架版本,而不是 dotnet 核心版本。

從 .NET Core 3.0 開始,您可以直接調用改進的 API 來獲取此類信息。

var netCoreVer = System.Environment.Version; // 3.0.0
var runtimeVer = System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription; // .NET Core 3.0.0-preview4.19113.15

看看這個問題

有關詳細說明,您可以在此處找到原始文章: https ://learn.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed

連同這里的原始 github 評論鏈: https ://github.com/dotnet/BenchmarkDotNet/issues/448

public static string GetNetCoreVersion() {
  var assembly = typeof(System.Runtime.GCSettings).GetTypeInfo().Assembly;
  var assemblyPath = assembly.CodeBase.Split(new[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries);
  int netCoreAppIndex = Array.IndexOf(assemblyPath, "Microsoft.NETCore.App");
  if (netCoreAppIndex > 0 && netCoreAppIndex < assemblyPath.Length - 2)
    return assemblyPath[netCoreAppIndex + 1];
  return null;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM