build/LegacyPackages/14.0/build.cmd (72 lines of code) (raw):
@ECHO OFF
SETLOCAL
:: This batch file creates NuGet packages for shipped MSBuild 14.0 assemblies. It copies the assemblies locally and then builds "reference"
:: assemblies which are empty assemblies used by the compiler during a build. The reference assembly is built for net45 and netstandard1.3 with
:: certain code #ifdef'd out. This allows users to compile a single assembly that should work cross-platform
:: To update the packages, change the VERSIONMINOR, VERSIONBUILD, and BUILDDROP variables. Generally packages should be pushed to the dotnet
:: NuGet feed until tested and then placed on NuGet.org.
:: The major version here should align with the major version of MSBuild being packaged
SET VERSIONMAJOR=14
:: The minor version here should align with the Visual Studio Update of MSBuild being packaged
SET VERSIONMINOR=3
:: The build number here should be incremented when servicing the NuGet package. The tag should be prereleaseNN when trying out something new
SET VERSIONBUILD=0
:: This is the path to where this file is located
SET ROOT=%~dp0
:: The path to where packages will be outputed to
SET PKGDIR=%ROOT%packages
:: The path to the build drop containing the assemblies to be packaged
SET BUILDDROP=\\cpvsbuild\drops\VS\d14rel\raw\25420.01\binaries.x86ret\bin\i386\xmake
:: The build configuration for the reference assemblies
SET CONFIGURATION=Release
:: The icon url to use in the packages
SET ICONURL=https://go.microsoft.com/fwlink/?linkid=825694
:: The license url to use in the packages
SET LICENSEURL=http://go.microsoft.com/fwlink/?LinkId=329770
:: The project url to use in the packages
SET PROJECTURL=http://go.microsoft.com/fwlink/?LinkId=624683
:: Ensure dotnet.exe is on the PATH
where dotnet.exe>NUL 2>&1
IF ERRORLEVEL 1 (
ECHO Could not find dotnet.exe on the PATH, please open a command window with dotnet.exe on the PATH or install the dotnet CLI first. 1>&2
EXIT /B 1
)
:: Ensure nuget.exe is on the PATH
where nuget.exe>NUL 2>&1
IF ERRORLEVEL 1 (
ECHO Could not find nuget.exe on the PATH, please open a command window with nuget.exe on the PATH. 1>&2
EXIT /B 1
)
:: Create a package for each assembly. The ordering here sort of matters based on the dependencies of the assemblies
CALL :CreatePackage "Microsoft.Build.Framework"
CALL :CreatePackage "Microsoft.Build"
CALL :CreatePackage "Microsoft.Build.Engine"
CALL :CreatePackage "Microsoft.Build.Utilities.Core"
CALL :CreatePackage "Microsoft.Build.Tasks.Core"
CALL :CreatePackage "Microsoft.Build.Conversion.Core"
GOTO :EOF
:CreatePackage
:: BasePath is the root path of the assembly to build
SET BASEPATH=%ROOT%\%~1
:: The path to the .nuspec
SET NUSPEC=%BASEPATH%\%~1.nuspec
:: The path to the project.json
SET PROJECTJSON=%BASEPATH%\project.json
:: The path to where to copy the shipped assembly locally
SET LIBPATH=%BASEPATH%\lib\net45
IF EXIST "%PROJECTJSON%" (
:: Restore NuGet packages based on the project.json
dotnet restore "%PROJECTJSON%"
IF ERRORLEVEL 1 ECHO Error restoring packages & EXIT /B 1
:: Build the referece assemblies. This will build against all frameworks in the project.json
dotnet build "%PROJECTJSON%" --configuration "%CONFIGURATION%"
IF ERRORLEVEL 1 EXIT /B 1
)
:: Ensure the packages directory exists otherwise NuGet will complain...
IF NOT EXIST "%PKGDIR%" MKDIR "%PKGDIR%"
:: Copy the lib assembly locally for NuGet to consume
xcopy /ydsi %BUILDDROP%\%~1.dll "%LIBPATH%\"
IF ERRORLEVEL 1 EXIT /B 1
:: Create the NuGet package
NuGet PACK "%NUSPEC%" -BasePath "%BASEPATH%" -Properties "id=%~1;version=%VERSIONMAJOR%.%VERSIONMINOR%.%VERSIONBUILD%;configuration=%CONFIGURATION%;iconUrl=%ICONURL%;licenseUrl=%LICENSEURL%;projectUrl=%PROJECTURL%" -OutputDirectory "%PKGDIR%" -Verbosity Detailed
GOTO :EOF