coreclr的哪个版本?

时间:2016-04-27 12:15:06

标签: .net asp.net-core coreclr

在.NET CLI中,我可以使用交换机--version来获取CLI的版本。是否有类似的方法来获取coreclr的版本?

3 个答案:

答案 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相关信息:

  • 版本和运行时位于project.json的frameworks部分(例如netcoreapp1.0,net451)。
  • 架构和操作系统位于project.json的runtimes部分(例如win7-x64)。
  • 位置是我们恢复后的NuGet global-packages文件夹(nuget locals all -list)和构建后我们项目的bin
  • Alias和Active 已过时。

"There's no dnvm replacement"用于.NET CLI,没有命令“获取coreclr的版本”。这是因为现在我们的project.json中已经完全指定了运行时,并使用dotnet restore命令进行了安装。

使用dnu/dnx/dnvm工具链,我们独立于应用程序及其依赖项安装了运行时。

  1. 我们使用dnvm install|upgrade|use下载并使用运行时; dnvm没有咨询project.json。
  2. 我们使用dnu restore下载特定于应用程序的依赖项; dnu确实参考了project.json。
  3. 使用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上讨论。 功能