哪个版本的coreclr?
Which version of coreclr?
在 .NET CLI 中,我可以使用开关 --version
来获取 CLI 的版本。有没有类似的方法来获取 coreclr
的版本?
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
相关资料:
- 版本和运行时在project.json的
frameworks
部分(例如netcoreapp1.0、net451)。
- 架构和操作系统在project.json的
runtimes
部分(例如win7-x64)。
- 位置 是恢复后我们的 NuGet 全局包文件夹 (
nuget locals all -list
) 和构建后项目的 bin
。
- Alias 和 Active 已过时。
"There's no dnvm replacement" for the .NET CLI and no command to "get the version of the 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
将构建我们的项目。
没有了 dnvm
。
coreclr 的版本在您的 project.json
文件中确定。
安装 dotnet cli 时还有一个共享的 运行时间。您可以在 dotnet cli 文件夹中找到它。
如果您的应用程序没有在 project.json
中指定任何 运行 时间,那么您的应用程序是可移植的,并且将 运行 使用共享的 运行 时间。您可以指定多个 运行 次,您的应用程序二进制文件将分别编译所有这些 运行 次。
已更新:
将 link 添加到 .NET Platform Standard 描述在 .NET API 中设计新方法的文档
Link 到 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": {}
}
}
现有的答案可能包含所有信息,但部分信息被遗留信息掩盖了,所以让我尝试 实用的摘要,截至 .NET Core v2.0 beta.
虽然 是 全球活动的 SDK 版本 ,因为dotnet --version
[1] 报道
,
有 no 全球活动 运行time (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 }' *.csproj
在 PowerShell Core(Windows 和 Unix)中:
([xml] (Get-Content -Raw *.csproj)).Project.PropertyGroup.RuntimeFrameworkVersion
有关包含此功能及更多功能的 PowerShell Core 脚本,请参阅我的 this Gist。
[1] 或者,在每个项目的基础上,您可以通过在项目文件夹中放置一个 global.json
文件来覆盖全局活动的 SDK 版本 - 请参阅 the docs .
另请注意,仅 运行ning dotnet
不带参数 或 运行ning dotnet --version
未安装 SDK 将显示反映共享 host ("driver") 版本的文本 - 这种模糊和混乱的行为正在 GitHub here 上讨论。
在 .NET CLI 中,我可以使用开关 --version
来获取 CLI 的版本。有没有类似的方法来获取 coreclr
的版本?
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
相关资料:
- 版本和运行时在project.json的
frameworks
部分(例如netcoreapp1.0、net451)。 - 架构和操作系统在project.json的
runtimes
部分(例如win7-x64)。 - 位置 是恢复后我们的 NuGet 全局包文件夹 (
nuget locals all -list
) 和构建后项目的bin
。 - Alias 和 Active 已过时。
"There's no dnvm replacement" for the .NET CLI and no command to "get the version of the 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
将构建我们的项目。
没有了 dnvm
。
coreclr 的版本在您的 project.json
文件中确定。
安装 dotnet cli 时还有一个共享的 运行时间。您可以在 dotnet cli 文件夹中找到它。
如果您的应用程序没有在 project.json
中指定任何 运行 时间,那么您的应用程序是可移植的,并且将 运行 使用共享的 运行 时间。您可以指定多个 运行 次,您的应用程序二进制文件将分别编译所有这些 运行 次。
已更新:
将 link 添加到 .NET Platform Standard 描述在 .NET API 中设计新方法的文档
Link 到 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": {}
}
}
现有的答案可能包含所有信息,但部分信息被遗留信息掩盖了,所以让我尝试 实用的摘要,截至 .NET Core v2.0 beta.
虽然 是 全球活动的 SDK 版本 ,因为
dotnet --version
[1] 报道 ,有 no 全球活动 运行time (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 }' *.csproj
在 PowerShell Core(Windows 和 Unix)中:
([xml] (Get-Content -Raw *.csproj)).Project.PropertyGroup.RuntimeFrameworkVersion
有关包含此功能及更多功能的 PowerShell Core 脚本,请参阅我的 this Gist。
[1] 或者,在每个项目的基础上,您可以通过在项目文件夹中放置一个 global.json
文件来覆盖全局活动的 SDK 版本 - 请参阅 the docs .
另请注意,仅 运行ning dotnet
不带参数 或 运行ning dotnet --version
未安装 SDK 将显示反映共享 host ("driver") 版本的文本 - 这种模糊和混乱的行为正在 GitHub here 上讨论。