PowerShell/docs/building/internals.md
Sergei Vorobev 6626720e44 Introduce Microsoft.PowerShell.SDK
- introduce SDK project with our dependencies and CoreCLR framework
  for runtime.
- Move dependencies for Full from ConsoleHost to powershell-win-full
- make powershell-win-full Top-level project
- Change build.psm1 to do publish for -FullCLR build
- Update docs
2016-07-26 16:48:57 -07:00

1.3 KiB

Internals of build process

The purpose of this document is to explain build process internals with subtle nuances. This document is not by any means complete. The ultimate source of truth is the code in .\build.psm1 that's getting executed on the corresponding CI system.

This document assumes that you can successfully build PowerShell from sources for your platform.

Top directory

We are calling dotnet tool build for $Top directory

  • src\powershell-windows for CoreCLR on Windows.
  • src\powershell-unix for CoreCLR on Linux and OS X.
  • src\powershell-full for FullCLR builds (Windows only)

Dummy dependencies

We use dummy dependencies between project.json files to leverage dotnet build functionality. For example, src\powershell-windows\project.json has dependency on Microsoft.PowerShell.PSReadLine, but in reality, there is no build dependency.

Dummy dependencies allows us to build just $Top folder, instead of building several folders.

Dummy dependencies rules

  • If assembly is part of FullCLR build, it should be listed as a dependency for FullCLR $Top folder (src\powershell-full)

  • If assembly is part of CoreCLR build, it should be listed as a dependency for $Top folder (src\powershell-unix or src\powershell-windows)