From fce39845d970aec0990895dc8f4e15b1b2820ce9 Mon Sep 17 00:00:00 2001 From: Yui Date: Mon, 22 May 2017 10:17:39 -0700 Subject: [PATCH] Updated TypeScript MSBuild In depth (markdown) --- TypeScript-MSBuild-In-Depth.md | 88 ++++++++++++++++++++++++++++++++++ TypeScript-MSBuild-In-depth.md | 49 ------------------- 2 files changed, 88 insertions(+), 49 deletions(-) create mode 100644 TypeScript-MSBuild-In-Depth.md delete mode 100644 TypeScript-MSBuild-In-depth.md diff --git a/TypeScript-MSBuild-In-Depth.md b/TypeScript-MSBuild-In-Depth.md new file mode 100644 index 0000000..699d823 --- /dev/null +++ b/TypeScript-MSBuild-In-Depth.md @@ -0,0 +1,88 @@ +# Delivery Mechanism + +## NuGet + +In release 2.3 and above, TypeScript MSBuild can be used with MSBuild on non-Window platform. + +### Package structure + +TypeScript NuGet contains two main folders + +* build folder + + Two files are locate in the folder. + Both are entry point for main TypeScript target file and props file respectively. + + 1. Microsoft.TypeScript.MSBuild.targets + + The file set variables specific to a run-time platform, such as a path to `TypeScript.Tasks.dll`, before import `Microsoft.TypeScript.targets` from `tools` folder. + + 2. Microsoft.TypeScript.MSBuild.props + + The file imports `Microsoft.TypeScript.Default.props` from `tools` folder and set properties indicating that the build is initiated through NuGet. + +* tools folder + + Earlier version only contains tsc folder. `Microsoft.TypeScript.targets` and `TypeScript.Tasks.dll` are located at the root level. + + Below structure is for version 2.3 and above. + 1. net45 + + contains `Microsoft.TypeScript.targets`, `TypeScript.Tasks.dll` and facade dependency dlls. + When building any projecton Window platform, MSBuild uses the DLLs from this folder. + + 2. netstandard + + contains `Microsoft.TypeScript.targets` and `TypeScript.Tasks.dll`. + The contents in this folder are used when building projects on non-Window machine. + + 3. tsc + + contains `tsc.exe` and all dependency files to execute the exe. + On Window, `TypeScript.Tasks.dll` uses the `tsc.exe` to build projects. + On non-Window, `TypeScript.Tasks.dll` uses NodeJS to run `tsc.js`. + So, it is required that NodeJS is installed. + +## MSI Installer + +TypeScript is also shipped as a stand-alone exe that can be installed on Window machine. +Currently the installer is only available for Visual Studio 2015 with Update 3. + +The installer install files into following folders: + +1. Microsoft SDKs Folder + + The installer install a sub-folder called `TypeScript` into `%ProgramFile%/Microsoft SDKs`. + + * Before version 2.3 + + A version-number folder is installed inside the TypeScript sub-folder in which the version-number folder contains all neccessary files to execute `tsc.exe`. + + * Version 2.3 and above + + In additional to similar contents with prior version, the newer installer installe another sub-folder inside the version-number folder called *build*. + This *build* folder contains `Microsoft.TypeScript.targets`, `TypeScript.Tasks.dll` and its dependencies. + This allows us to be able to support side-by-side while being able to make any neccessary changes to the task and target file. + We also add another sub-folder called *versions* which is used by the stub target file (see: Stub Target File section) to figure out the version to use. + +2. MSBuild folder + + The installer install a folder call *TypeScript* to `%ProgramFile%\MSBuild\Microsoft\VisualStudio\v14.0` + + * Before version 2.3 + + The folder mainly contains the TypeScript task and target file. + These files include main logic to build and compile TypeScript project. + + * Version 2.3 and above + + The folder only contains an entry point target file which although has same name as earlier version target file, it has very different contents. + This new target file is what we call stub-target file (See: Stub Target File section) + It is worth noting that the installer will *NOT* install the task dll into this location anymore. + +# Stub Target File + +This file is introduced in version 2.3 and later. It is to replaced the original target file that is moved into *build* inside version-number folder in `%ProgramFile%/Microsoft SDKs/TypeScript` folder. +The file load a file in *versions* folder from `%ProgramFile%/Microsoft SDKs/TypeScript`. +This mechanism will sort file in lexicographically, allowing us to pick latest version. +If the version can't be figure out, the stub target will load the one next to it. diff --git a/TypeScript-MSBuild-In-depth.md b/TypeScript-MSBuild-In-depth.md deleted file mode 100644 index bcff134..0000000 --- a/TypeScript-MSBuild-In-depth.md +++ /dev/null @@ -1,49 +0,0 @@ -# Delivery Mechanism - -## NuGet - -In release 2.3 and above, TypeScript MSBuild can be used with MSBuild on non-Window platform. - -### Package structure - -TypeScript NuGet contains two main folders - -* build folder - - Two files are locate in the folder. - Both are entry point for main TypeScript target file and props file respectively. - - 1. Microsoft.TypeScript.MSBuild.targets - - The file set variables specific to a run-time platform, such as a path to `TypeScript.Tasks.dll`, before import `Microsoft.TypeScript.targets` from `tools` folder. - - 2. Microsoft.TypeScript.MSBuild.props - - The file imports `Microsoft.TypeScript.Default.props` from `tools` folder and set properties indicating that the build is initiated through NuGet. - -* tools folder - - Earlier version only contains tsc folder. `Microsoft.TypeScript.targets` and `TypeScript.Tasks.dll` are located at the root level. - - Below structure is for version 2.3 and above. - 1. net45 - - contains `Microsoft.TypeScript.targets`, `TypeScript.Tasks.dll` and facade dependency dlls. - When building any projecton Window platform, MSBuild uses the DLLs from this folder. - - 2. netstandard - - contains `Microsoft.TypeScript.targets` and `TypeScript.Tasks.dll`. - The contents in this folder are used when building projects on non-Window machine. - - 3. tsc - - contains `tsc.exe` and all dependency files to execute the exe. - On Window, `TypeScript.Tasks.dll` uses the `tsc.exe` to build projects. - On non-Window, `TypeScript.Tasks.dll` uses `tsc.js`, running through command - - ``` - node tsc.js - ``` - - Therefore, on non-Window platform, NodeJS is required to be installed. \ No newline at end of file