如何在ASP.NET Core中获取.NET Core Runtime的版本

2019-01-03 03:35发布

通过 PlatformServices.Default.Runtime.RuntimeVersion 获取的版本号不对,它得到的值是 4.0.0.0 。

标签: dotnet
3条回答
smile是对你的礼貌
2楼-- · 2019-01-03 04:09

如果想要的是 .net Core Runtime ( CoreRT 本机工具链),代码如下:

            Process process = new Process
            {
                StartInfo = new ProcessStartInfo()
                {
                    Arguments = "--version",
                    CreateNoWindow = true,
                    FileName = "dotnet",
                    RedirectStandardOutput = true
                }
            };
            process.Start();
            process.WaitForExit();
            var version = process.StandardOutput.ReadToEnd().Trim();

如果想要的是.net core的版本, .net core 其实就是一堆类库,是以包的形式发布的。就像我们将项目中的package引用修改后,就从RC1变成RC2了。所以只需要确定引用包的版本就可以了,下面的代码检测.net core版本,而不是ASP.NET Core版本

            var configuration = new ConfigurationBuilder()
                .AddJsonFile("project.json").Build();
            return configuration.GetValue<string>("dependencies:Microsoft.NETCore.App:version");

 

下面这种方式不可用的原因是,它检查的是程序集的版本,而不是包的版本,两者可能相同也可能不同。

RuntimeVersion = typeof(object).GetTypeInfo().Assembly.GetName().Version.ToString();

查看更多
ら.Afraid
3楼-- · 2019-01-03 04:10

最新版应该是1.0.0-preview1-002702,这个要翻源码了,没看到有介绍的。

查看更多
Ridiculous、
4楼-- · 2019-01-03 04:17

可以通过

Microsoft.Extensions.DependencyModel
DependencyContext.Default来获取
查看更多
登录 后发表回答