在.NET CLI中,我可以使用交换机--version
来获取CLI的版本。是否有类似的方法来获取coreclr
的版本?
答案 0 :(得分:5)
不再dnvm
。
coreclr的版本在您的project.json
文件中确定。
安装dotnet cli时也有共享运行时。你可以在dotnet cli文件夹中找到它。
如果您的应用程序未在project.json
中指定任何运行时,那么您的应用程序是可移植的,并将使用共享运行时运行。您可以指定多个运行时,并且将分别为所有这些运行时编译应用程序二进制文件。
<强>已更新强>:
添加指向.NET Platform Standard文档的链接,描述在.NET中设计API的新方法
链接到David Fowl的GitHub repository,描述.NET平台标准
以下是指定运行时的示例
{
"version": "1.0.0-*",
"compilationOptions": {
"warningsAsErrors": true,
"preserveCompilationContext": true,
"emitEntryPoint": true
},
"dependencies": {
...
},
"frameworks": {
"net451": {
"dependencies": {
....
}
},
"netcoreapp1.0": {
"imports": [
"dnxcore50",
"portable-net45+win8"
],
"dependencies": {
"NETStandard.Library": "1.5.0-rc2-24018",
"Microsoft.DotNet.ProjectModel": "1.0.0-rc2-002416"
}
}
},
"content": [
"config.json"
],
"runtimes": {
"win7-x64": {},
"win7-x86": {},
"osx.10.11-x64": {},
"ubuntu.14.04-x64": {},
"centos.7-x64": {},
"rhel.7.2-x64": {},
"debian.8.2-x64": {}
}
}
答案 1 :(得分:4)
coreclr的版本在我们的应用程序的project.json中。 dnvm list -detailed
(来自之前的工具链)向我们展示了与dotnet
工具链完全无关的运行时信息。
> dnvm list -detailed
Active Version Runtime Architect OperatingSystem Alias Location
------ ------- ------- --------- --------------- ----- --------
1.0.0-rc2-16595 coreclr x64 win C:\Users\me\.dnx\runtimes
* 1.0.0-rc2-20221 clr x86 win default C:\Users\me\.dnx\runtimes
我们可以找到相应的dotnet
相关信息:
frameworks
部分(例如netcoreapp1.0,net451)。 runtimes
部分(例如win7-x64)。 nuget locals all -list
)和构建后我们项目的bin
。 "There's no dnvm replacement"用于.NET CLI,没有命令“获取coreclr的版本”。这是因为现在我们的project.json中已经完全指定了运行时,并使用dotnet restore
命令进行了安装。
使用dnu/dnx/dnvm
工具链,我们独立于应用程序及其依赖项安装了运行时。
dnvm install|upgrade|use
下载并使用运行时; dnvm
没有咨询project.json。 dnu restore
下载特定于应用程序的依赖项; dnu
确实参考了project.json。使用dotnet
工具链,restore
操作结合了这两个步骤。它参考我们的project.json并下载运行时和依赖项。
dnvm
不会与dotnet
工具链互动。实际上,我们可以删除~/.dnx
目录,dotnet
将构建我们的项目。
答案 2 :(得分:2)
现有的答案可能包含所有信息,但这些信息部分地被遗留信息所掩盖,所以让我尝试从.NET Core v2.0 beta开始实用摘要。
虽然 是全球活跃的 SDK 版,但由dotnet --version
[1]报告
,
没有全局活动的运行时(CoreCLR)版本 - 运行时并排安装, 每个项目通过其*.csproj
文件确定它所针对的运行时。
列出所有已安装的 CoreCLR版本:
在 bash
:
ls -1 "$(dirname "$(which dotnet)")/shared/Microsoft.NETCore.App"
在 PowerShell Core (Windows和Unix)中:
(Get-ChildItem "$((Get-Command -Type Application dotnet).source)/../shared/Microsoft.NETCore.app").Name
检查给定项目的目标CoreCLR:(运行项目根文件夹中的命令):
在 bash
:
awk -F '</?RuntimeFrameworkVersion>' 'NF>1 {print $2}' *.csproj
在 PowerShell Core (Windows和Unix)中:
([xml] (Get-Content -Raw *.csproj)).Project.PropertyGroup.RuntimeFrameworkVersion
对于包含此功能的 PowerShell核心脚本以及更多,请参阅我的this Gist。
[1]可选地,在每个项目的基础上,您可以通过在项目文件夹中放置global.json
文件来覆盖全局活动的SDK版本 - 请参阅the docs。
另请注意,只运行dotnet
不带参数或运行dotnet --version
而未安装SDK 将显示反映共享主机的文本(“driver”)版本 - 这个模糊和混乱的行为正在GitHub here上讨论。
功能