想在ASP.NET Core页面上显示.NET Core SDK的版本,没找到相应的API,于是采用在ASP.NET Core中执行"dotnet -v"命令的方式,代码如下:
public IActionResult SdkVersion() { var sdkVersion = string.Empty; var psi = new System.Diagnostics.ProcessStartInfo("dotnet", " -v"); psi.RedirectStandardOutput = true; using (var process = System.Diagnostics.Process.Start(psi)) { var output = process.StandardOutput.ReadToEnd(); sdkVersion = output.Split('\n') .Where(line => line.StartsWith(".NET Command Line Tools")) .FirstOrDefault(); } return Content(sdkVersion); }
该代码在Windows上可以正常运行并得到期望的结果:
.NET Command Line Tools (1.0.0-preview1-002702)
但放到Linux Ubuntu上运行时,浏览器发出请求后,服务器一直无响应,直至超时。
不会意思,是我测试时弄错了,上面的代码可以在Linux上正常运行。