From 3cb9bbe90e329a3550bb55fda5c620f23fc4eb86 Mon Sep 17 00:00:00 2001
From: Rob Mensching <rob@firegiant.com>
Date: Tue, 14 Feb 2023 23:11:29 -0800
Subject: Update some extensions to take advantage of multitargeting project
 references

---
 src/ext/Bal/bal.cmd                                | 43 ++++++++++++++++------
 .../WixToolsetTest.ManagedHost.csproj              |  4 +-
 src/ext/Bal/wixlib/BalExtension_platform.wxi       | 10 ++---
 src/ext/Bal/wixlib/Mbahost_platform.wxi            |  4 +-
 src/ext/Bal/wixlib/bal.wixproj                     | 20 ++--------
 src/ext/NetFx/netfx.cmd                            | 28 ++++++++++++--
 src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi   |  2 +-
 .../NetFx/wixlib/NetfxBundleExtension_Platform.wxi |  6 +--
 src/ext/NetFx/wixlib/netfx.wixproj                 | 21 +++--------
 src/ext/UI/ui.cmd                                  |  5 ++-
 src/ext/UI/wixlib/Common_Platform.wxi              |  2 +-
 src/ext/UI/wixlib/ui.wixproj                       | 13 +++----
 src/ext/Util/util.cmd                              |  3 +-
 .../Util/wixlib/UtilBundleExtension_Platform.wxi   |  2 +-
 src/ext/Util/wixlib/UtilExtension_Platform.wxi     |  2 +-
 src/ext/Util/wixlib/util.wixproj                   | 14 +------
 src/testresultfilelist.txt                         |  4 +-
 17 files changed, 98 insertions(+), 85 deletions(-)

(limited to 'src')

diff --git a/src/ext/Bal/bal.cmd b/src/ext/Bal/bal.cmd
index f3028d58..eebef70f 100644
--- a/src/ext/Bal/bal.cmd
+++ b/src/ext/Bal/bal.cmd
@@ -3,35 +3,56 @@
 
 @set _C=Debug
 @set _L=%~dp0..\..\..\build\logs
+
 :parse_args
 @if /i "%1"=="release" set _C=Release
+@if /i "%1"=="inc" set _INC=1
+@if /i "%1"=="clean" set _CLEAN=1
 @if not "%1"=="" shift & goto parse_args
 
+@set _B=%~dp0..\..\..\build\Bal.wixext\%_C%
+
+:: Clean
+
+@if "%_INC%"=="" call :clean
+@if NOT "%_CLEAN%"=="" goto :end
+
 @echo Building ext\Bal %_C% using %_N%
 
 :: Restore
 nuget restore dnchost\packages.config || exit /b
-msbuild -t:Restore -p:Configuration=%_C% || exit /b
 
 :: Build
-msbuild -p:Configuration=%_C%;Platform=x86 test\examples\TestEngine\Example.TestEngine.vcxproj || exit /b
-msbuild -p:Configuration=%_C%;Platform=x64 test\examples\TestEngine\Example.TestEngine.vcxproj || exit /b
-msbuild -p:Configuration=%_C%;Platform=ARM64 test\examples\TestEngine\Example.TestEngine.vcxproj || exit /b
-
-msbuild -p:Configuration=%_C% -bl:%_L%\bal_build.binlog || exit /b
-
-dotnet test test\WixToolsetTest.Dnc.HostGenerator -c %_C% --nologo --no-build -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Dnc.HostGenerator.trx" || exit /b
+msbuild -Restore -p:Configuration=%_C% -bl:%_L%\ext_bal_build.binlog || exit /b
 
-msbuild -Restore -p:Configuration=%_C% test\examples\examples.proj -bl:%_L%\bal_examples_build.binlog  || exit /b
+msbuild -Restore -p:Configuration=%_C% test\examples\examples.proj -m -bl:%_L%\bal_examples_build.binlog  || exit /b
 
 :: Test
-dotnet test test\WixToolsetTest.Bal -c %_C% --no-build -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Bal.trx" || exit /b
-dotnet test test\WixToolsetTest.ManagedHost -c %_C% --no-build -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.ManagedHost.trx" || exit /b
+dotnet test ^
+ %_B%\net6.0\WixToolsetTest.Dnc.HostGenerator.dll ^
+ %_B%\net6.0\WixToolsetTest.Bal.dll ^
+ %_B%\net6.0\WixToolsetTest.ManagedHost.dll ^
+ --nologo -l "trx;LogFileName=%_L%\TestResults\bal.wixext.trx" || exit /b
 
 :: Pack
 msbuild -t:Pack -p:Configuration=%_C% -p:NoBuild=true wixext\WixToolset.Bal.wixext.csproj || exit /b
 msbuild -t:Pack -p:Configuration=%_C% -p:NoBuild=true WixToolset.Dnc.HostGenerator\WixToolset.Dnc.HostGenerator.csproj || exit /b
 msbuild -t:Pack -p:Configuration=%_C% -p:NoBuild=true WixToolset.Mba.Host\WixToolset.Mba.Host.csproj || exit /b
 
+@goto :end
+
+:clean
+@rd /s/q "..\..\..\build\Bal.wixext" 2> nul
+@del "..\..\..\build\artifacts\WixToolset.Bal.wixext.*.nupkg" 2> nul
+@del "..\..\..\build\artifacts\WixToolset.Dnc.HostGenerator.*.nupkg" 2> nul
+@del "..\..\..\build\artifacts\WixToolset.Mba.Host.*.nupkg" 2> nul
+@del "%_L%\ext_bal_build.binlog" 2> nul
+@del "%_L%\TestResults\bal.wixext.trx" 2> nul
+@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.bal.wixext" 2> nul
+@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.dnc.hostgenerator" 2> nul
+@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.mba.host" 2> nul
+@exit /b
+
+:end
 @popd
 @endlocal
diff --git a/src/ext/Bal/test/WixToolsetTest.ManagedHost/WixToolsetTest.ManagedHost.csproj b/src/ext/Bal/test/WixToolsetTest.ManagedHost/WixToolsetTest.ManagedHost.csproj
index 16a05fec..9caf3aa6 100644
--- a/src/ext/Bal/test/WixToolsetTest.ManagedHost/WixToolsetTest.ManagedHost.csproj
+++ b/src/ext/Bal/test/WixToolsetTest.ManagedHost/WixToolsetTest.ManagedHost.csproj
@@ -8,7 +8,9 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\examples\TestEngine\Example.TestEngine.vcxproj" ReferenceOutputAssembly="false" />
+    <ProjectReference Include="..\examples\TestEngine\Example.TestEngine.vcxproj" Properties="Platform=ARM64" ReferenceOutputAssembly="false" />
+    <ProjectReference Include="..\examples\TestEngine\Example.TestEngine.vcxproj" Properties="Platform=x86" ReferenceOutputAssembly="false" />
+    <ProjectReference Include="..\examples\TestEngine\Example.TestEngine.vcxproj" Properties="Platform=x64" ReferenceOutputAssembly="false" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/src/ext/Bal/wixlib/BalExtension_platform.wxi b/src/ext/Bal/wixlib/BalExtension_platform.wxi
index 5b0d78d0..bb922317 100644
--- a/src/ext/Bal/wixlib/BalExtension_platform.wxi
+++ b/src/ext/Bal/wixlib/BalExtension_platform.wxi
@@ -6,8 +6,8 @@
 
     <Fragment>
         <BootstrapperApplication Id="WixDotNetCoreBootstrapperApplicationHost$(var.Suffix)">
-            <BootstrapperApplicationDll Id="WixDotNetCoreBootstrapperApplicationHost" SourceFile="!(bindpath.$(var.platform))\dnchost.dll" />
-            <Payload SourceFile="!(bindpath.$(var.platform))\wixstdba.dll" Name="dncpreq.dll" />
+            <BootstrapperApplicationDll Id="WixDotNetCoreBootstrapperApplicationHost" SourceFile="!(bindpath.dnchost.$(var.platform))\dnchost.dll" />
+            <Payload SourceFile="!(bindpath.wixstdba.$(var.platform))\wixstdba.dll" Name="dncpreq.dll" />
         </BootstrapperApplication>
     </Fragment>
 
@@ -20,8 +20,8 @@
 
     <Fragment>
         <BootstrapperApplication Id="WixInternalUIBootstrapperApplication$(var.Suffix)">
-            <BootstrapperApplicationDll Id="WixInternalUIBootstrapperApplication" SourceFile="!(bindpath.$(var.platform))\wixiuiba.dll" />
-            <Payload SourceFile="!(bindpath.$(var.platform))\wixstdba.dll" Name="prereqba.dll" />
+            <BootstrapperApplicationDll Id="WixInternalUIBootstrapperApplication" SourceFile="!(bindpath.wixiuiba.$(var.platform))\wixiuiba.dll" />
+            <Payload SourceFile="!(bindpath.wixstdba.$(var.platform))\wixstdba.dll" Name="prereqba.dll" />
         </BootstrapperApplication>
     </Fragment>
 
@@ -34,7 +34,7 @@
 
     <Fragment>
         <BootstrapperApplication Id="WixStandardBootstrapperApplication$(var.Suffix)">
-            <BootstrapperApplicationDll Id="WixStandardBootstrapperApplication" SourceFile="!(bindpath.$(var.platform))\wixstdba.dll" />
+            <BootstrapperApplicationDll Id="WixStandardBootstrapperApplication" SourceFile="!(bindpath.wixstdba.$(var.platform))\wixstdba.dll" />
         </BootstrapperApplication>
     </Fragment>
 
diff --git a/src/ext/Bal/wixlib/Mbahost_platform.wxi b/src/ext/Bal/wixlib/Mbahost_platform.wxi
index 9a5241cf..3ea7840f 100644
--- a/src/ext/Bal/wixlib/Mbahost_platform.wxi
+++ b/src/ext/Bal/wixlib/Mbahost_platform.wxi
@@ -6,8 +6,8 @@
 
     <Fragment>
         <BootstrapperApplication Id="WixManagedBootstrapperApplicationHost$(var.Suffix)">
-            <BootstrapperApplicationDll Id="WixManagedBootstrapperApplicationHost" SourceFile="!(bindpath.$(var.platform))\mbahost.dll" />
-            <Payload SourceFile="!(bindpath.$(var.platform))\wixstdba.dll" Name="mbapreq.dll" />
+            <BootstrapperApplicationDll Id="WixManagedBootstrapperApplicationHost" SourceFile="!(bindpath.mbahost.$(var.platform))\mbahost.dll" />
+            <Payload SourceFile="!(bindpath.wixstdba.$(var.platform))\wixstdba.dll" Name="mbapreq.dll" />
             <PayloadGroupRef Id="WixManagedBootstrapperApplicationHostManagedPayloads" />
         </BootstrapperApplication>
     </Fragment>
diff --git a/src/ext/Bal/wixlib/bal.wixproj b/src/ext/Bal/wixlib/bal.wixproj
index 64c9c122..e703a0a8 100644
--- a/src/ext/Bal/wixlib/bal.wixproj
+++ b/src/ext/Bal/wixlib/bal.wixproj
@@ -8,26 +8,14 @@
 
   <ItemGroup>
     <BindPath Include="..\wixstdba\Resources\" />
-    <BindPath Include="$(OutputPath)net6.0" />
     <BindPath Include="$(OutputPath)net20" />
-    <BindPath Include="$(OutputPath)x86" BindName="x86" />
-    <BindPath Include="$(OutputPath)x64" BindName="x64" />
-    <BindPath Include="$(OutputPath)arm64" BindName="arm64" />
   </ItemGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\dnchost\dnchost.vcxproj" Properties="Platform=x86" ReferenceOutputAssembly="false" />
-    <ProjectReference Include="..\dnchost\dnchost.vcxproj" Properties="Platform=x64" ReferenceOutputAssembly="false" />
-    <ProjectReference Include="..\dnchost\dnchost.vcxproj" Properties="Platform=ARM64" ReferenceOutputAssembly="false" />
-    <ProjectReference Include="..\mbahost\mbahost.vcxproj" Properties="Platform=x86" ReferenceOutputAssembly="false" />
-    <ProjectReference Include="..\mbahost\mbahost.vcxproj" Properties="Platform=x64" ReferenceOutputAssembly="false" />
-    <ProjectReference Include="..\mbahost\mbahost.vcxproj" Properties="Platform=ARM64" ReferenceOutputAssembly="false" />
-    <ProjectReference Include="..\wixiuiba\wixiuiba.vcxproj" Properties="Platform=x86" ReferenceOutputAssembly="false" />
-    <ProjectReference Include="..\wixiuiba\wixiuiba.vcxproj" Properties="Platform=x64" ReferenceOutputAssembly="false" />
-    <ProjectReference Include="..\wixiuiba\wixiuiba.vcxproj" Properties="Platform=ARM64" ReferenceOutputAssembly="false" />
-    <ProjectReference Include="..\wixstdba\wixstdba.vcxproj" Properties="Platform=x86" ReferenceOutputAssembly="false" />
-    <ProjectReference Include="..\wixstdba\wixstdba.vcxproj" Properties="Platform=x64" ReferenceOutputAssembly="false" />
-    <ProjectReference Include="..\wixstdba\wixstdba.vcxproj" Properties="Platform=ARM64" ReferenceOutputAssembly="false" />
+    <ProjectReference Include="..\dnchost\dnchost.vcxproj" Platforms="arm64,x86,x64" />
+    <ProjectReference Include="..\mbahost\mbahost.vcxproj" Platforms="arm64,x86,x64" />
+    <ProjectReference Include="..\wixiuiba\wixiuiba.vcxproj" Platforms="arm64,x86,x64" />
+    <ProjectReference Include="..\wixstdba\wixstdba.vcxproj" Platforms="arm64,x86,x64" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/src/ext/NetFx/netfx.cmd b/src/ext/NetFx/netfx.cmd
index 65cd1dcb..0b3fb28f 100644
--- a/src/ext/NetFx/netfx.cmd
+++ b/src/ext/NetFx/netfx.cmd
@@ -3,24 +3,46 @@
 
 @set _C=Debug
 @set _L=%~dp0..\..\..\build\logs
+
 :parse_args
 @if /i "%1"=="release" set _C=Release
+@if /i "%1"=="inc" set _INC=1
+@if /i "%1"=="clean" set _CLEAN=1
 @if not "%1"=="" shift & goto parse_args
 
+@set _B=%~dp0..\..\..\build\NetFx.wixext\%_C%
+
+:: Clean
+
+@if "%_INC%"=="" call :clean
+@if NOT "%_CLEAN%"=="" goto :end
+
 @echo NetFx.wixext build %_C%
 
 :: Restore
 nuget restore netcoresearch\packages.config || exit /b
-msbuild -t:Restore -p:Configuration=%_C% || exit /b
 
 :: Build
-msbuild -p:Configuration=%_C% -bl:%_L%\netfx_build.binlog || exit /b
+msbuild -Restore -p:Configuration=%_C% -bl:%_L%\ext_netfx_build.binlog || exit /b
 
 :: Test
-dotnet test -c %_C% --no-build test\WixToolsetTest.Netfx || exit /b
+dotnet test ^
+ %_B%\net6.0\WixToolsetTest.NetFx.dll ^
+ --nologo -l "trx;LogFileName=%_L%\TestResults\netfx.wixext.trx" || exit /b
 
 :: Pack
 msbuild -t:Pack -p:Configuration=%_C% -p:NoBuild=true wixext\WixToolset.Netfx.wixext.csproj || exit /b
 
+@goto :end
+
+:clean
+@rd /s/q "..\..\build\NetFx.wixext" 2> nul
+@del "..\..\build\artifacts\WixToolset.NetFx.wixext.*.nupkg" 2> nul
+@del "%_L%\ext_netfx_build.binlog" 2> nul
+@del "%_L%\TestResults\netfx.wixext.trx" 2> nul
+@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.netfx.wixext" 2> nul
+@exit /b
+
+:end
 @popd
 @endlocal
diff --git a/src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi b/src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi
index c9c8af02..81746db1 100644
--- a/src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi
+++ b/src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi
@@ -28,7 +28,7 @@
 
   <!-- NetFx Custom Action DLL Definitions -->
   <Fragment>
-    <Binary Id="$(var.Prefix)NetFxCA$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))netfxca.dll" />
+    <Binary Id="$(var.Prefix)NetFxCA$(var.Suffix)" SourceFile="!(bindpath.netfxca.$(var.platform))netfxca.dll" />
     <Binary Id="$(var.Prefix)NetCheck_x86" SourceFile="!(bindpath.x86)NetCoreCheck.exe" />
     <Binary Id="$(var.Prefix)NetCheck_x64" SourceFile="!(bindpath.x64)NetCoreCheck.exe" />
     <Binary Id="$(var.Prefix)NetCheck_arm64" SourceFile="!(bindpath.arm64)NetCoreCheck.exe" />
diff --git a/src/ext/NetFx/wixlib/NetfxBundleExtension_Platform.wxi b/src/ext/NetFx/wixlib/NetfxBundleExtension_Platform.wxi
index e3300534..bc332efc 100644
--- a/src/ext/NetFx/wixlib/NetfxBundleExtension_Platform.wxi
+++ b/src/ext/NetFx/wixlib/NetfxBundleExtension_Platform.wxi
@@ -5,10 +5,10 @@
     <?include ..\..\caDecor.wxi ?>
 
     <Fragment>
-        <BundleExtension Id="$(var.Prefix)NetfxBundleExtension$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))netfxbe.dll" Name="$(var.Prefix)NetfxBundleExtension$(var.Suffix)\netfxbe.dll">
+        <BundleExtension Id="$(var.Prefix)NetfxBundleExtension$(var.Suffix)" SourceFile="!(bindpath.netfxbe.$(var.platform))netfxbe.dll" Name="$(var.Prefix)NetfxBundleExtension$(var.Suffix)\netfxbe.dll">
             <?foreach PLATFORM in x86;x64;arm64?>
-            <Payload SourceFile="!(bindpath.$(var.PLATFORM))netcoresearch.exe" Name="$(var.Prefix)NetfxBundleExtension$(var.Suffix)\$(var.PLATFORM)\netcoresearch.exe" />
-            <Payload SourceFile="!(bindpath.$(var.PLATFORM))hostfxr.dll" Name="$(var.Prefix)NetfxBundleExtension$(var.Suffix)\$(var.PLATFORM)\hostfxr.dll" />
+            <Payload SourceFile="!(bindpath.netcoresearch.$(var.PLATFORM))netcoresearch.exe" Name="$(var.Prefix)NetfxBundleExtension$(var.Suffix)\$(var.PLATFORM)\netcoresearch.exe" />
+            <Payload SourceFile="!(bindpath.netcoresearch.$(var.PLATFORM))hostfxr.dll" Name="$(var.Prefix)NetfxBundleExtension$(var.Suffix)\$(var.PLATFORM)\hostfxr.dll" />
             <?endforeach?>
         </BundleExtension>
     </Fragment>
diff --git a/src/ext/NetFx/wixlib/netfx.wixproj b/src/ext/NetFx/wixlib/netfx.wixproj
index 1ab72e8e..2bd09d95 100644
--- a/src/ext/NetFx/wixlib/netfx.wixproj
+++ b/src/ext/NetFx/wixlib/netfx.wixproj
@@ -8,24 +8,15 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <BindInputPaths Include="$(OutputPath)x86" BindName='x86' />
-    <BindInputPaths Include="$(OutputPath)x64" BindName='x64' />
-    <BindInputPaths Include="$(OutputPath)arm64" BindName='arm64' />
-    <BindInputPaths Include="$(PkgMicrosoft_NET_Tools_NETCoreCheck_x86)\win-x86" BindName='x86' />
-    <BindInputPaths Include="$(PkgMicrosoft_NET_Tools_NETCoreCheck_x64)\win-x64" BindName='x64' />
-    <BindInputPaths Include="$(PkgMicrosoft_NET_Tools_NETCoreCheck_arm64)\win-arm64" BindName='arm64' />
+    <BindPath Include="$(PkgMicrosoft_NET_Tools_NETCoreCheck_x86)\win-x86" BindName='x86' />
+    <BindPath Include="$(PkgMicrosoft_NET_Tools_NETCoreCheck_x64)\win-x64" BindName='x64' />
+    <BindPath Include="$(PkgMicrosoft_NET_Tools_NETCoreCheck_arm64)\win-arm64" BindName='arm64' />
   </ItemGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\be\netfxbe.vcxproj" Properties="Platform=ARM64" />
-    <ProjectReference Include="..\be\netfxbe.vcxproj" Properties="Platform=x64" />
-    <ProjectReference Include="..\be\netfxbe.vcxproj" Properties="Platform=x86" />
-    <ProjectReference Include="..\ca\netfxca.vcxproj" Properties="Platform=ARM64" />
-    <ProjectReference Include="..\ca\netfxca.vcxproj" Properties="Platform=x86" />
-    <ProjectReference Include="..\ca\netfxca.vcxproj" Properties="Platform=x64" />
-    <ProjectReference Include="..\netcoresearch\netcoresearch.vcxproj" Properties="Platform=ARM64" />
-    <ProjectReference Include="..\netcoresearch\netcoresearch.vcxproj" Properties="Platform=x86" />
-    <ProjectReference Include="..\netcoresearch\netcoresearch.vcxproj" Properties="Platform=x64" />
+    <ProjectReference Include="..\be\netfxbe.vcxproj" Platforms="arm64,x86,x64" />
+    <ProjectReference Include="..\ca\netfxca.vcxproj" Platforms="arm64,x86,x64" />
+    <ProjectReference Include="..\netcoresearch\netcoresearch.vcxproj" Platforms="arm64,x86,x64" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/src/ext/UI/ui.cmd b/src/ext/UI/ui.cmd
index 3823f45a..0b0036af 100644
--- a/src/ext/UI/ui.cmd
+++ b/src/ext/UI/ui.cmd
@@ -8,6 +8,8 @@
 @if /i "%1"=="clean" set _CLEAN=1
 @if not "%1"=="" shift & goto parse_args
 
+@set _B=%~dp0..\..\..\build\UI.wixext\%_C%
+
 :: Clean
 
 @if "%_INC%"=="" call :clean
@@ -16,7 +18,7 @@
 @echo UI.wixext build %_C%
 
 :: Build
-msbuild -Restore -p:Configuration=%_C% || exit /b
+msbuild -Restore -p:Configuration=%_C% -warnaserror -bl:%_L%\ext_ui_build.binlog || exit /b
 
 :: Test
 :: dotnet test -c %_C% --no-build test\WixToolsetTest.UI || exit /b
@@ -29,6 +31,7 @@ msbuild -t:Pack -p:Configuration=%_C% -p:NoBuild=true wixext\WixToolset.UI.wixex
 :clean
 @rd /s/q "..\..\..\build\UI.wixext" 2> nul
 @del "..\..\..\build\artifacts\WixToolset.UI.wixext.*.nupkg" 2> nul
+@del "%_L%\ext_ui_build.binlog" 2> nul
 @rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.ui.wixext" 2> nul
 @exit /b
 
diff --git a/src/ext/UI/wixlib/Common_Platform.wxi b/src/ext/UI/wixlib/Common_Platform.wxi
index cd050e06..329abb2e 100644
--- a/src/ext/UI/wixlib/Common_Platform.wxi
+++ b/src/ext/UI/wixlib/Common_Platform.wxi
@@ -13,6 +13,6 @@
     </Fragment>
 
     <Fragment>
-        <Binary Id="WixUiCa$(Suffix)" SourceFile="!(bindpath.$(platform))uica.dll" />
+        <Binary Id="WixUiCa$(Suffix)" SourceFile="!(bindpath.uica.$(platform))uica.dll" />
     </Fragment>
 </Include>
diff --git a/src/ext/UI/wixlib/ui.wixproj b/src/ext/UI/wixlib/ui.wixproj
index ebac0c79..848bc882 100644
--- a/src/ext/UI/wixlib/ui.wixproj
+++ b/src/ext/UI/wixlib/ui.wixproj
@@ -5,6 +5,7 @@
     <BindFiles>true</BindFiles>
     <Cultures>en-us</Cultures>
   </PropertyGroup>
+
   <PropertyGroup>
     <DefineConstants>
       $(DefineConstants);
@@ -17,19 +18,15 @@
       upIco=$(MSBuildProjectDirectory)\Bitmaps\up.ico;
     </DefineConstants>
   </PropertyGroup>
-  <ItemGroup>
-    <BindInputPaths Include="$(OutputPath)x86" BindName="x86" />
-    <BindInputPaths Include="$(OutputPath)x64" BindName="x64" />
-    <BindInputPaths Include="$(OutputPath)arm64" BindName="arm64" />
-  </ItemGroup>
+
   <ItemGroup>
     <Content Include="Common_Platform.wxi" />
   </ItemGroup>
+
   <ItemGroup>
-    <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=x86" />
-    <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=x64" />
-    <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=ARM64" />
+    <ProjectReference Include="..\ca\uica.vcxproj" Platforms="arm64,x86,x64" />
   </ItemGroup>
+
   <ItemGroup>
     <PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" />
   </ItemGroup>
diff --git a/src/ext/Util/util.cmd b/src/ext/Util/util.cmd
index aad9c65c..54ede2bf 100644
--- a/src/ext/Util/util.cmd
+++ b/src/ext/Util/util.cmd
@@ -20,7 +20,7 @@
 @echo Building ext\Util %_C% using %_N%
 
 :: Build
-msbuild -Restore -p:Configuration=%_C% || exit /b
+msbuild -Restore -p:Configuration=%_C% -warnaserror -bl:%_L%\ext_util_build.binlog || exit /b
 
 :: Test
 dotnet test ^
@@ -35,6 +35,7 @@ msbuild -t:Pack -p:Configuration=%_C% -p:NoBuild=true wixext\WixToolset.Util.wix
 :clean
 @rd /s/q "..\..\build\Util.wixext" 2> nul
 @del "..\..\build\artifacts\WixToolset.Util.wixext.*.nupkg" 2> nul
+@del "%_L%\ext_util_build.binlog" 2> nul
 @del "%_L%\TestResults\util.wixext.trx" 2> nul
 @rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.util.wixext" 2> nul
 @exit /b
diff --git a/src/ext/Util/wixlib/UtilBundleExtension_Platform.wxi b/src/ext/Util/wixlib/UtilBundleExtension_Platform.wxi
index a2e295f2..5c964d7d 100644
--- a/src/ext/Util/wixlib/UtilBundleExtension_Platform.wxi
+++ b/src/ext/Util/wixlib/UtilBundleExtension_Platform.wxi
@@ -5,6 +5,6 @@
     <?include ..\..\caDecor.wxi ?>
 
     <Fragment>
-        <BundleExtension Id="$(var.Prefix)UtilBundleExtension$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))utilbe.dll" Name="$(var.Prefix)UtilBundleExtension$(var.Suffix)\utilbe.dll" />
+        <BundleExtension Id="$(var.Prefix)UtilBundleExtension$(var.Suffix)" SourceFile="!(bindpath.utilbe.$(var.platform))utilbe.dll" Name="$(var.Prefix)UtilBundleExtension$(var.Suffix)\utilbe.dll" />
     </Fragment>
 </Include>
diff --git a/src/ext/Util/wixlib/UtilExtension_Platform.wxi b/src/ext/Util/wixlib/UtilExtension_Platform.wxi
index c748fff7..be48c495 100644
--- a/src/ext/Util/wixlib/UtilExtension_Platform.wxi
+++ b/src/ext/Util/wixlib/UtilExtension_Platform.wxi
@@ -367,6 +367,6 @@
     </Fragment>
 
     <Fragment>
-        <Binary Id="$(var.Prefix)UtilCA$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))utilca.dll" />
+        <Binary Id="$(var.Prefix)UtilCA$(var.Suffix)" SourceFile="!(bindpath.utilca.$(var.platform))utilca.dll" />
     </Fragment>
 </Include>
diff --git a/src/ext/Util/wixlib/util.wixproj b/src/ext/Util/wixlib/util.wixproj
index c1975af2..7631e149 100644
--- a/src/ext/Util/wixlib/util.wixproj
+++ b/src/ext/Util/wixlib/util.wixproj
@@ -6,18 +6,8 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <BindInputPaths Include="$(OutputPath)x86" BindName='x86' />
-    <BindInputPaths Include="$(OutputPath)x64" BindName='x64' />
-    <BindInputPaths Include="$(OutputPath)arm64" BindName='arm64' />
-  </ItemGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\be\utilbe.vcxproj" Properties="Platform=ARM64" />
-    <ProjectReference Include="..\be\utilbe.vcxproj" Properties="Platform=x86" />
-    <ProjectReference Include="..\be\utilbe.vcxproj" Properties="Platform=x64" />
-    <ProjectReference Include="..\ca\utilca.vcxproj" Properties="Platform=ARM64" />
-    <ProjectReference Include="..\ca\utilca.vcxproj" Properties="Platform=x86" />
-    <ProjectReference Include="..\ca\utilca.vcxproj" Properties="Platform=x64" />
+    <ProjectReference Include="..\be\utilbe.vcxproj" Platforms="arm64,x86,x64" />
+    <ProjectReference Include="..\ca\utilca.vcxproj" Platforms="arm64,x86,x64" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/src/testresultfilelist.txt b/src/testresultfilelist.txt
index 6a2eadcb..9e156730 100644
--- a/src/testresultfilelist.txt
+++ b/src/testresultfilelist.txt
@@ -3,10 +3,8 @@ build/logs/TestResults/burn.trx
 build/logs/TestResults/libs.trx
 build/logs/TestResults/tools.trx
 build/logs/TestResults/wix.trx
-build/logs/TestResults/WixToolsetTest.Bal.trx
 build/logs/TestResults/WixToolsetTest.BurnE2E.trx
-build/logs/TestResults/WixToolsetTest.Dnc.HostGenerator.trx
-build/logs/TestResults/WixToolsetTest.ManagedHost.trx
 build/logs/TestResults/util.wixext.trx
+build/logs/TestResults/bal.wixext.trx
 build/logs/TestResults/WixToolsetTest.MsiE2E.trx
 build/logs/TestResults/WixToolsetTest.WixE2ETests.trx
\ No newline at end of file
-- 
cgit v1.2.3-55-g6feb