从源生成 .NET CoreBuild .NET Core from source

有关 .NET CoreCLR 的源代码,可以访问 GitHub 上的 dotnet/coreclr 存储库。

生成目前依赖于以下系统必备组件:

组件的安装因操作系统 (OS) 而异。请参阅特定 OS 的生成说明:

  • Windows
  • macOS
  • NetBSD不能跨 OS 进行交叉生成(仅适用于基于 X64 的 ARM)。必须在特定的平台上生成该平台。

生成具有两个主要的 buildTypes

  • 调试(默认)- 以最低优化水平编译运行时并进行额外的运行时检查(断言)。这种优化级别的降低和额外的检查会减慢运行时的执行速度,但对于调试来说是很有价值的。这是开发和测试环境的推荐设置。
  • 发布 - 以完全优化水平编译运行时,无需进行额外的运行时检查。这将产生更快的运行时性能,但需要更长时间进行生成,并且难以进行调试。将 release 传递给生成脚本以选择此生成类型。此外,默认情况下,生成不仅会创建运行时可执行文件,还会生成所有测试。这其中有不少测试都需花费大量时间,但如果只想试验一下更改,则不必执行此操作。可以通过向生成脚本添加 skiptests 参数来跳过测试生成,如下例所示(在 Unix 计算机上将 .\build 替换为 ):
  1. .\build release skiptests

可使用 -? 或 -help 限定符找到更多生成选项。

生成将其所有生成的文件放在存储库底部的 bin 目录下。bin\Log 目录包含生成期间生成的日志文件(生成失败时这些日志最为有用)。实际输出位于bin\Product[平台].[CPU 体系结构].[生成类型] 目录中,如 bin\Product\Windows_NT.x64.Release 。

虽然生成的“原始”输出有时很有用,但通常只需要 NuGet 包,这些包位于之前输出目录的 .nuget\pkg 子目录中。

可通过两种基本方法使用新的运行时:

有关 .NET Core CLI 的源代码,可以访问 GitHub 上的 存储库。

为了生成 .NET Core CLI,需要在计算机上安装以下项。

  • Windows 和 Linux:
    • PATH 上的 git
  • macOS:
    • PATH 上的 git
    • Xcode
    • OpenSSL若要进行生成,请在 Windows 上从根运行 build.cmd,在 Linux 和 macOS 上从根运行 。如果不希望执行测试,请运行 build.cmd -t:Compile./build.sh -t:Compile若要在 macOS Sierra 中生成 CLI,需通过运行 export DOTNET_RUNTIME_ID=osx.10.11-x64 设置 DOTNET_RUNTIME_ID 环境变量。

使用 artifacts/{os}-{arch}/stage2 中的 dotnet 可执行文件来试用新生成的 CLI。如果想在从当前控制台调用 dotnet 时使用生成输出,也可以将 artifacts/{os}-{arch}/stage2 添加到 PATH。