As it stands we only produce a Windows ILCompiler package. This work implements building and publishing of OS-specific runtime packages and spins off ILCompiler as a meta-package, which can be referenced when adding to a project.
Working on this, a quirk in MSBuild behavior under .NET Core popped up - build artifacts (i.e. .targets and .props files) are imported for direct project package references, but not for runtime-specific packages, defined as dependencies in the meta-package. This doesn't seem to be the case in vanilla MSBuild.
The below is a serious hack to work around this - during runtime, we find the resolved runtime package reference and define the path to it on disk, from which all OS-specific components are loaded and run. The motivation behind the workaround was to keep the package as small as possible, particularly because of the large intersection of components between OS implementations.
All workarounds are marked as such and should be removed once Microsoft/msbuild#2807 is resolved.
There is some slowdown because of sequential resolution of targets, but not immediately noticeable and is unfortunately unavoidable - almost entirely avoided if CoreRT build targets are referenced directly (excluding MSBuild overhead).
* Split pipeline build to match CoreFX's model.
- OS-specific legs no longer publish to MyGet, they just upload to Azure.
- New publish leg downloads from Azure and publishes to MyGet.
- Only includes Microsoft.TargetingPack.Private.CoreRT for now, will add ILCompiler
after we sort out what OS-specific packages should be named.
* Addressing code review feedback (PR#2505).
In order to sign and package our builds properly in CI we need to split the build phases up. These changes add build-native, build-managed, and build-tests scripts, with build-packages soon to come. Summary:
- Variable handling moved to buildvars-setup scripts to avoid duplication.
- Everything else is from the old scripts with some path cleanup changes.
- Build.cmd/sh now calls into the split scripts.
- Updated build pipeline definitions for new scripts.
* Fix getting test root on Mac and Linux pipeline builds.
* Add clean scripts for CI to use.
CI is slightly different from a normal user scenario because
it will often be cleaning right after another build before
VBCSCompiler.exe is killed automatically.
* Add checked-in build definitions for pipebuild.