.NET CLI 是否仅适用于 .NET Core?

Is .NET CLI only for .NET Core?

如果我想创建一个使用 .NET Framework 的 ASP.NET Core 1.0 应用程序,是否需要使用 .NET CLI? .NET CLI 仅适用于新的 .NET Core 库还是同时适用于 Core 和 .NET 4.6?

您也可以将 dotnet cli 用于完整的框架应用程序和库。您只需要使用适当的框架标记 - 例如 "net46" 来定位 .NET 4.6。您也可以针对多个框架:

例如,来自我的 Noda Time 图书馆:

"frameworks": {
  "net45": {
    "frameworkAssemblies": {
      "System.Xml": "",
      "System.Numerics": ""
    }
  },
  "netstandard1.1": {
    "buildOptions": {
      "define": [ "PCL" ]
    },
    "dependencies": {
      "System.Diagnostics.Debug": "4.0.11",
      "System.Globalization": "4.0.11",
      "System.Linq": "4.1.0",
      "System.Resources.ResourceManager": "4.0.1",
      "System.Runtime.Extensions": "4.1.0",
      "System.Runtime.Numerics": "4.0.1",
      "System.Runtime.Serialization.Xml": "4.1.1",
      "System.Threading": "4.0.11",
      "System.Xml.XmlSerializer": "4.0.11"
    }
  }
}

PCL 预处理器符号将在某些时候重命名为 "DOTNET_CORE" 或类似的符号 - 它之所以存在是因为我有一堆代码在我以前使用它时用于条件编译便携式 class 个库。

你仍然可以目标可移植class 库,顺便说一下......所以一个包可以目标许多不同的版本。

Do I use the CLI if I want to create an ASP.NET Core 1.0 app that uses the .NET Framework?

.NET CLI是两者之一,区别实际上是在project.json文件中。例如,您可以使用以下命令 compile/build ASP.NET Core 应用程序,而该应用程序实际上是针对全框架的:

dotnet build

下面是一个示例 project.json 的目标 .NET 4.6.

{
  "frameworks": {
    "net46": { }
  }
}

有关更多详细信息,我总是鼓励人们参考 documentation found here. Likewise, since this is open-source(这太棒了)您可以查看源代码以了解它是如何使用的。

CLI 只是工具。您的应用程序将用于 运行 的内容与工具无关(即只要工具能够为您的目标框架创建正确的应用程序,工具 运行 的方式并不重要)。相反,在您的 project.json 文件中,您以目标框架名称的形式指定目标框架(例如 net451 用于 .NET Framework 4.5.1 或 netcoreapp1.0 用于 .NET Core 应用程序等)