diff --git a/src/transform_all.bat b/src/transform_all.bat index e91758fbb2a..1c104ef4868 100644 --- a/src/transform_all.bat +++ b/src/transform_all.bat @@ -17,24 +17,30 @@ dir *.tt /b > t4list.txt echo the following T4 templates will be transformed: type t4list.txt -set TextTransform=%COMMONPROGRAMFILES(x86)%\microsoft shared\TextTemplating\11.0\TextTransform.exe +:: Use texttransform.exe from the IDE if it is present, otherwise, use legacy locations. -IF NOT EXIST "%TextTransform%" set TextTransform=%COMMONPROGRAMFILES(x86)%\microsoft shared\TextTemplating\12.0\TextTransform.exe +:: clear text transform path to undefine it +set TEXTTRANSFORMPATH= -IF NOT EXIST "%TextTransform%" set TextTransform=%COMMONPROGRAMFILES(x86)%\microsoft shared\TextTemplating\14.0\TextTransform.exe - -IF NOT EXIST "%TextTransform%" set TextTransform=%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\Common7\IDE\TextTransform.exe - -IF NOT EXIST "%TextTransform%" set TextTransform=%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\TextTransform.exe +:: use latest vswhere utility to locate in IDE, where it resides now. +IF EXIST "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" ( + for /f "usebackq tokens=1* delims=: " %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -all`) do ( + if /i "%%i" == "installationPath" set TEXTTRANSFORMPATH="%%j\Common7\IDE\TextTransform.exe" + ) +) -IF NOT EXIST "%TextTransform%" set TextTransform=%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\Common7\IDE\TextTransform.exe +:: not found in IDE, use legacy +IF NOT DEFINED TEXTTRANSFORMPATH ( + set TEXTTRANSFORMPATH="%COMMONPROGRAMFILES(x86)%\microsoft shared\TextTemplating\%VisualStudioVersion%\TextTransform.exe" +) :: transform all the templates for /f %%d in (t4list.txt) do ( set file_name=%%d set file_name=!file_name:~0,-3!.%extension% -echo: \--^> !file_name! -"%TextTransform%" -out !file_name! %%d +echo: \--^> !file_name! +echo %TEXTTRANSFORMPATH% -out !file_name! %%d + %TEXTTRANSFORMPATH% -out !file_name! %%d ) :: delete T4 list and return to previous directory