diff --git a/.gitignore b/.gitignore index 16994e0ab1..fb8092468e 100644 --- a/.gitignore +++ b/.gitignore @@ -142,3 +142,5 @@ build/ui-docs.zip build/csharp-docs.zip build/msbuild.log .vs/ + +build/tools/ diff --git a/build/Build.bat b/build/Build.bat index fc0d8a69ea..660cfa34be 100644 --- a/build/Build.bat +++ b/build/Build.bat @@ -49,10 +49,52 @@ REM This is necessary because SETLOCAL is on in InstallGit.cmd so that one might REM but the path setting is lost due to SETLOCAL path=C:\Program Files (x86)\Git\cmd;C:\Program Files\Git\cmd;%PATH% +SET toolsFolder=%CD%\tools\ +IF NOT EXIST %toolsFolder% ( + MD tools +) + +SET nuGetExecutable=%CD%\tools\nuget.exe +IF NOT EXIST %nuGetExecutable% ( + ECHO Getting NuGet so we can fetch some tools + ECHO Downloading https://dist.nuget.org/win-x86-commandline/latest/nuget.exe to %nuGetExecutable% + powershell -Command "(New-Object Net.WebClient).DownloadFile('https://dist.nuget.org/win-x86-commandline/latest/nuget.exe', '%nuGetExecutable%')" +) + +:: We need 7za.exe for BuildBelle.bat +IF NOT EXIST %toolsFolder%7za.exe ( + ECHO 7zip not found - fetching now + %nuGetExecutable% install 7-Zip.CommandLine -OutputDirectory %toolsFolder% -Verbosity quiet +) + +:: We need 7za.exe for VS2017+ +IF NOT EXIST %toolsFolder%vswhere.exe ( + ECHO vswhere not found - fetching now + %nuGetExecutable% install vswhere -OutputDirectory %toolsFolder% -Verbosity quiet +) + +:: Put 7za.exe and vswhere.exe in a predictable path (not version specific) +FOR /f "delims=" %%A in ('dir %toolsFolder%7-Zip.CommandLine.* /b') DO SET "sevenZipExePath=%toolsFolder%%%A\" +MOVE %sevenZipExePath%tools\7za.exe %toolsFolder%7za.exe + +FOR /f "delims=" %%A in ('dir %toolsFolder%vswhere.* /b') DO SET "vswhereExePath=%toolsFolder%%%A\" +MOVE %vswhereExePath%tools\vswhere.exe %toolsFolder%vswhere.exe + ECHO. ECHO Making sure we have a web.config IF NOT EXIST %CD%\..\src\Umbraco.Web.UI\web.config COPY %CD%\..\src\Umbraco.Web.UI\web.Template.config %CD%\..\src\Umbraco.Web.UI\web.config +for /f "usebackq tokens=1* delims=: " %%i in (`%CD%\tools\vswhere.exe -latest -requires Microsoft.Component.MSBuild`) do ( + if /i "%%i"=="installationPath" set InstallDir=%%j +) + +SET VSWherePath="%InstallDir%\MSBuild" +ECHO. +ECHO Visual Studio is installed in: %InstallDir% + +SET MSBUILDPATH=C:\Program Files (x86)\MSBuild\14.0\Bin +SET MSBUILD="%MSBUILDPATH%\MsBuild.exe" + ECHO. ECHO. ECHO Performing MSBuild and producing Umbraco binaries zip files @@ -60,7 +102,7 @@ ECHO This takes a few minutes and logging is set to report warnings ECHO and errors only so it might seems like nothing is happening for a while. ECHO You can check the msbuild.log file for progress. ECHO. -%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe "Build.proj" /p:BUILD_RELEASE=%release% /p:BUILD_COMMENT=%comment% /p:NugetPackagesDirectory=%nuGetFolder% /consoleloggerparameters:Summary;ErrorsOnly;WarningsOnly /fileLogger +%MSBUILD% "Build.proj" /p:BUILD_RELEASE=%release% /p:BUILD_COMMENT=%comment% /p:NugetPackagesDirectory=%nuGetFolder% /p:VSWherePath=%VSWherePath% IF ERRORLEVEL 1 GOTO :error ECHO. diff --git a/build/BuildBelle.bat b/build/BuildBelle.bat index 8a07ee380a..ae2d5ba8b5 100644 --- a/build/BuildBelle.bat +++ b/build/BuildBelle.bat @@ -1,33 +1,58 @@ @ECHO OFF SETLOCAL + :: SETLOCAL is on, so changes to the path not persist to the actual user's path -SET release=%1 -ECHO Installing Npm NuGet Package - -SET nuGetFolder=%CD%\..\src\packages\ -ECHO Configured packages folder: %nuGetFolder% +SET toolsFolder=%CD%\tools\ ECHO Current folder: %CD% -%CD%\..\src\.nuget\NuGet.exe install Npm.js -OutputDirectory %nuGetFolder% -Verbosity quiet +SET nodeFileName=node-v6.9.1-win-x86.7z +SET nodeExtractFolder=%toolsFolder%node.js.691 -for /f "delims=" %%A in ('dir %nuGetFolder%node.js.* /b') do set "nodePath=%nuGetFolder%%%A\" -for /f "delims=" %%A in ('dir %nuGetFolder%npm.js.* /b') do set "npmPath=%nuGetFolder%%%A\tools\" +IF NOT EXIST %nodeExtractFolder% ( + ECHO Downloading http://nodejs.org/dist/v6.9.1/%nodeFileName% to %toolsFolder%%nodeFileName% + powershell -Command "(New-Object Net.WebClient).DownloadFile('http://nodejs.org/dist/v6.9.1/%nodeFileName%', '%toolsFolder%%nodeFileName%')" + ECHO Extracting %nodeFileName% to %nodeExtractFolder% + %toolsFolder%\7za.exe x %toolsFolder%\%nodeFileName% -o%nodeExtractFolder% -aos > nul +) +FOR /f "delims=" %%A in ('dir %nodeExtractFolder%\node* /b') DO SET "nodePath=%nodeExtractFolder%\%%A" -ECHO Adding Npm and Node to path -REM SETLOCAL is on, so changes to the path not persist to the actual user's path -PATH=%npmPath%;%nodePath%;%PATH% +SET nuGetExecutable=%CD%\tools\nuget.exe +IF NOT EXIST %nuGetExecutable% ( + ECHO Downloading https://dist.nuget.org/win-x86-commandline/latest/nuget.exe to %nuGetExecutable% + powershell -Command "(New-Object Net.WebClient).DownloadFile('https://dist.nuget.org/win-x86-commandline/latest/nuget.exe', '%nuGetExecutable%')" +) -SET buildFolder=%CD% +SET drive=%CD:~0,2% +SET nuGetFolder=%drive%\packages\ +FOR /f "delims=" %%A in ('dir %nuGetFolder%npm.* /b') DO SET "npmPath=%nuGetFolder%%%A\" +IF [%npmPath%] == [] GOTO :installnpm +IF NOT [%npmPath%] == [] GOTO :build -ECHO Change directory to %CD%\..\src\Umbraco.Web.UI.Client\ -CD %CD%\..\src\Umbraco.Web.UI.Client\ +:installnpm + ECHO Downloading npm + ECHO Configured packages folder: %nuGetFolder% + ECHO Installing Npm NuGet Package + %nuGetExecutable% install Npm -OutputDirectory %nuGetFolder% -Verbosity detailed + REM Ensures that we look for the just downloaded NPM, not whatever the user has installed on their machine + FOR /f "delims=" %%A in ('dir %nuGetFolder%npm.* /b') DO SET "npmPath=%nuGetFolder%%%A\" + GOTO :build -ECHO Do npm install and the grunt build of Belle -call npm cache clean --quiet -call npm install --quiet -call npm install -g grunt-cli --quiet -call npm install -g bower --quiet -call grunt build --buildversion=%release% +:build + ECHO Adding Npm and Node to path + REM SETLOCAL is on, so changes to the path not persist to the actual user's path + PATH=%npmPath%;%nodePath%;%PATH% -ECHO Move back to the build folder -CD %buildFolder% \ No newline at end of file + SET buildFolder=%CD% + + ECHO Change directory to %CD%\..\src\Umbraco.Web.UI.Client\ + CD %CD%\..\src\Umbraco.Web.UI.Client\ + + ECHO Do npm install and the grunt build of Belle + call npm cache clean --quiet + call npm install --quiet + call npm install -g grunt-cli --quiet + call npm install -g bower --quiet + call grunt build --buildversion=%release% + + ECHO Move back to the build folder + CD %buildFolder% \ No newline at end of file diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 54c8c2c59c..512cab02b1 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -2435,14 +2435,31 @@ xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.1\x86\*.* "$(TargetDir)x86\" - - + + $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll + + + $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll + + + $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll + + + $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll + + + $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.Tasks.dll + + + + + diff --git a/src/umbraco.presentation.targets b/src/umbraco.presentation.targets deleted file mode 100644 index 2a33705d6f..0000000000 --- a/src/umbraco.presentation.targets +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - $(MSBuildStartupDirectory)\..\src\ - - - - - $(SolutionDir) - $(Computername). - - - - $(ProjectDir) - $(WebProjectOutputDir) - $(ProjDir)web.Template.$(ConfigEnvironment)$(Configuration).config - - - - $(ProjDir)web.Template.$(Configuration).config - - - - $(ProjDir) - - - - $(ProjOutputDir)\ - - - - - - - - - $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll - - - - $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll - - - - $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll - - - - $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll - - - - $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.Tasks.dll - - - - - - - - - - - - @(ConfigFiles) - $(OriginalFileName.Replace("%(ConfigFiles.Extension)",".$(Configuration)%(ConfigFiles.Extension)")) - $(OriginalFileName.Replace("$(ProjDir)", "$(ProjOutputDir)")) - - - - - - - - - - \ No newline at end of file