如何获取系统范围的.NET Core运行时环境的基本路径?

时间:2017-04-21 10:24:22

标签: c# msbuild .net-core

当我运行dotnet --info时,我收到的其他信息也包括:

Runtime Environment:
 ...
 Base Path:   C:\Program Files\dotnet\sdk\1.0.0

有没有办法在.NETCoreApp框架下运行的C#应用​​程序中以编程方式获取此值?我对它的Sdks子目录特别感兴趣,因为我需要在处理某些.NET Core项目时将它提供给MSBuild的托管实例。因此,AppContext.BaseDirectory等属性对我没用,因为它们指向当前应用程序的路径。

我可能最终会启动dotnet --info并解析其结果,但我想知道是否存在更优雅的方式。感谢。

编辑:原来错误dotnet --version而不是dotnet --info

2 个答案:

答案 0 :(得分:2)

你可以运行" dotnet --info"来自应用程序的命令并解析输出。

又快又脏:

if (isInternetAvailable()){
      // ... put your code here
}else{
      // ... put your code here
}

答案 1 :(得分:0)

安装此软件包后https://www.nuget.org/packages/Microsoft.DotNet.PlatformAbstractions/

ApplicationEnvironment.ApplicationBasePath会为您提供您正在寻找的内容。我通过查看dotnet源代码...

找到了这个

https://github.com/dotnet/cli/blob/f62ca5e235e253c033c628a39852d5923d53688a/src/dotnet/Program.cs#L251