aboutsummaryrefslogtreecommitdiff
path: root/src/ext
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2025-02-14 22:29:39 -0500
committerBob Arnson <github@bobs.org>2025-03-03 14:25:07 -0500
commitca6e44d496b0c589fdaabad69a00643f539c47cd (patch)
treeedf84727cecfc03092a2851b465d97622c5048eb /src/ext
parentba7fd5837ea149b2e319cc577fad27ce1162a064 (diff)
downloadwix-ca6e44d496b0c589fdaabad69a00643f539c47cd.tar.gz
wix-ca6e44d496b0c589fdaabad69a00643f539c47cd.tar.bz2
wix-ca6e44d496b0c589fdaabad69a00643f539c47cd.zip
Convert ext\ to MSTest and traversal projects.
- Move ext\ unit tests to MSTest. - MSBuildify ext projects with MSTest execution. - Fork test support projects for MSTest: - WixInternal.TestSupport - WixInternal.Core.TestPackage
Diffstat (limited to 'src/ext')
-rw-r--r--src/ext/Bal/bal.cmd55
-rw-r--r--src/ext/Bal/bal_t.proj33
-rw-r--r--src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/BalExtensionFixture.cs49
-rw-r--r--src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/InternalUIBAFixture.cs95
-rw-r--r--src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/WixToolsetTest.BootstrapperApplications.csproj7
-rw-r--r--src/ext/ComPlus/complus.cmd21
-rw-r--r--src/ext/ComPlus/complus_t.proj17
-rw-r--r--src/ext/ComPlus/test/WixToolsetTest.ComPlus/ComPlusExtensionFixture.cs9
-rw-r--r--src/ext/ComPlus/test/WixToolsetTest.ComPlus/WixToolsetTest.ComPlus.csproj7
-rw-r--r--src/ext/Dependency/dependency.cmd21
-rw-r--r--src/ext/Dependency/dependency_t.proj17
-rw-r--r--src/ext/Dependency/test/WixToolsetTest.Dependency/DependencyExtensionFixture.cs9
-rw-r--r--src/ext/Dependency/test/WixToolsetTest.Dependency/WixToolsetTest.Dependency.csproj7
-rw-r--r--src/ext/DirectX/directx.cmd24
-rw-r--r--src/ext/DirectX/directx_t.proj17
-rw-r--r--src/ext/DirectX/test/WixToolsetTest.DirectX/DirectXExtensionFixture.cs9
-rw-r--r--src/ext/DirectX/test/WixToolsetTest.DirectX/WixToolsetTest.DirectX.csproj7
-rw-r--r--src/ext/Firewall/firewall.cmd21
-rw-r--r--src/ext/Firewall/firewall_t.proj17
-rw-r--r--src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs61
-rw-r--r--src/ext/Firewall/test/WixToolsetTest.Firewall/WixToolsetTest.Firewall.csproj7
-rw-r--r--src/ext/Http/http.cmd21
-rw-r--r--src/ext/Http/http_t.proj17
-rw-r--r--src/ext/Http/test/WixToolsetTest.Http/HttpExtensionFixture.cs11
-rw-r--r--src/ext/Http/test/WixToolsetTest.Http/WixToolsetTest.Http.csproj7
-rw-r--r--src/ext/Iis/iis.cmd21
-rw-r--r--src/ext/Iis/iis_t.proj17
-rw-r--r--src/ext/Iis/test/WixToolsetTest.Iis/IisExtensionFixture.cs9
-rw-r--r--src/ext/Iis/test/WixToolsetTest.Iis/WixToolsetTest.Iis.csproj7
-rw-r--r--src/ext/Msmq/msmq.cmd21
-rw-r--r--src/ext/Msmq/msmq_t.proj17
-rw-r--r--src/ext/Msmq/test/WixToolsetTest.Msmq/MsmqExtensionFixture.cs12
-rw-r--r--src/ext/Msmq/test/WixToolsetTest.Msmq/WixToolsetTest.Msmq.csproj7
-rw-r--r--src/ext/NetFx/netfx.cmd48
-rw-r--r--src/ext/NetFx/netfx_t.proj26
-rw-r--r--src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs67
-rw-r--r--src/ext/NetFx/test/WixToolsetTest.Netfx/WixToolsetTest.Netfx.csproj7
-rw-r--r--src/ext/PowerShell/powershell_t.proj17
-rw-r--r--src/ext/PowerShell/ps.cmd21
-rw-r--r--src/ext/PowerShell/test/WixToolsetTest.PowerShell/PowerShellExtensionFixture.cs13
-rw-r--r--src/ext/PowerShell/test/WixToolsetTest.PowerShell/WixToolsetTest.Powershell.csproj7
-rw-r--r--src/ext/Sql/sql.cmd21
-rw-r--r--src/ext/Sql/sql_t.proj17
-rw-r--r--src/ext/Sql/test/WixToolsetTest.Sql/SqlExtensionFixture.cs9
-rw-r--r--src/ext/Sql/test/WixToolsetTest.Sql/WixToolsetTest.Sql.csproj7
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs89
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj7
-rw-r--r--src/ext/UI/ui.cmd42
-rw-r--r--src/ext/UI/ui_t.proj17
-rw-r--r--src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs61
-rw-r--r--src/ext/Util/test/WixToolsetTest.Util/WixToolsetTest.Util.csproj7
-rw-r--r--src/ext/Util/util.cmd45
-rw-r--r--src/ext/Util/util_t.proj17
-rw-r--r--src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs11
-rw-r--r--src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/WixToolsetTest.VisualStudio.csproj7
-rw-r--r--src/ext/VisualStudio/visualstudio_t.proj17
-rw-r--r--src/ext/VisualStudio/vs.cmd21
-rw-r--r--src/ext/ext.cmd53
-rw-r--r--src/ext/ext_t.proj30
59 files changed, 597 insertions, 764 deletions
diff --git a/src/ext/Bal/bal.cmd b/src/ext/Bal/bal.cmd
deleted file mode 100644
index df9ceca4..00000000
--- a/src/ext/Bal/bal.cmd
+++ /dev/null
@@ -1,55 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5@set _L=%~dp0..\..\..\build\logs
6
7:parse_args
8@if /i "%1"=="release" set _C=Release
9@if /i "%1"=="inc" set _INC=1
10@if /i "%1"=="clean" set _CLEAN=1
11@if not "%1"=="" shift & goto parse_args
12
13@set _B=%~dp0..\..\..\build\Bal.wixext\%_C%
14
15:: Clean
16
17@if "%_INC%"=="" call :clean
18@if NOT "%_CLEAN%"=="" goto :end
19
20@echo Building ext\Bal %_C% using %_N%
21
22:: Restore
23:: Build
24:: Pack
25:: Note: This test project must be restored and built directly to get all its support files laid out correctly.
26:: Everything else is built by the traversal project.
27msbuild -Restore -p:Configuration=%_C% -tl -nologo -m -warnaserror test\WixToolsetTest.BootstrapperApplications\WixToolsetTest.BootstrapperApplications.csproj -bl:%_L%\ext_bal_build.binlog || exit /b
28
29msbuild bal_t.proj -p:Configuration=%_C% -tl -nologo -warnaserror -bl:%_L%\bal_build.binlog || exit /b
30
31:: Test
32dotnet test ^
33 %_B%\x86\WixStdFnUnitTest.dll ^
34 %_B%\net6.0\WixToolsetTest.BootstrapperApplications.dll ^
35 --nologo -l "trx;LogFileName=%_L%\TestResults\bal.wixext.trx" || exit /b
36
37@goto :end
38
39:clean
40@rd /s/q "..\..\..\build\Bal.wixext" 2> nul
41@del "..\..\..\build\artifacts\WixToolset.Bal.wixext.*.nupkg" 2> nul
42@del "..\..\..\build\artifacts\WixToolset.BootstrapperApplications.wixext.*.nupkg" 2> nul
43@del "..\..\..\build\artifacts\WixToolset.WixStandardBootstrapperApplicationFunctionApi.*.nupkg" 2> nul
44@del "%_L%\ext_bal_build.binlog" 2> nul
45@del "%_L%\bal_fnsapi_build.binlog" 2> nul
46@del "%_L%\bal_examples_build.binlog" 2> nul
47@del "%_L%\TestResults\bal.wixext.trx" 2> nul
48@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.bal.wixext" 2> nul
49@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.bootstrapperapplications.wixext" 2> nul
50@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.wixstandardbootstrapperapplicationfunctionapi" 2> nul
51@exit /b
52
53:end
54@popd
55@endlocal
diff --git a/src/ext/Bal/bal_t.proj b/src/ext/Bal/bal_t.proj
index a0e66e97..da83b47f 100644
--- a/src/ext/Bal/bal_t.proj
+++ b/src/ext/Bal/bal_t.proj
@@ -3,13 +3,6 @@
3 3
4<Project Sdk="Microsoft.Build.Traversal"> 4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup> 5 <ItemGroup>
6 <!-- Restore: Explicitly restore the test projects, which need some hand-holding. -->
7 <ProjectReference Include="test\WixStdFnUnitTest\WixStdFnUnitTest.vcxproj" Targets="Restore" BuildInParallel="false" />
8 <ProjectReference Include="test\examples\examples.proj" Targets="Restore" />
9 <ProjectReference Include="wixext-backward-compatible\WixToolset.Bal.wixext.csproj" Targets="Restore" />
10
11 <!-- Build -->
12
13 <!-- C++/CLI projects will try to build their dependent projects in parallel with others, so they must be built first. --> 6 <!-- C++/CLI projects will try to build their dependent projects in parallel with others, so they must be built first. -->
14 <ProjectReference Include="test\WixStdFnUnitTest\WixStdFnUnitTest.vcxproj" Properties="Platform=x86" BuildInParallel="false" /> 7 <ProjectReference Include="test\WixStdFnUnitTest\WixStdFnUnitTest.vcxproj" Properties="Platform=x86" BuildInParallel="false" />
15 8
@@ -17,11 +10,33 @@
17 <ProjectReference Include="wixstdfn\wixstdfn.vcxproj" Properties="Platform=x64" /> 10 <ProjectReference Include="wixstdfn\wixstdfn.vcxproj" Properties="Platform=x64" />
18 <ProjectReference Include="wixstdfn\wixstdfn.vcxproj" Properties="Platform=ARM64" /> 11 <ProjectReference Include="wixstdfn\wixstdfn.vcxproj" Properties="Platform=ARM64" />
19 12
20 <ProjectReference Include="test\examples\examples.proj" /> 13 <ProjectReference Include="test\WixToolsetTest.BootstrapperApplications\WixToolsetTest.BootstrapperApplications.csproj" Properties="Platform=x64" />
21 14
22 <!-- Pack -->
23 <ProjectReference Include="wixstdfn\wixstdfn.vcxproj" Properties="NoBuild=true" Targets="PackNative" /> 15 <ProjectReference Include="wixstdfn\wixstdfn.vcxproj" Properties="NoBuild=true" Targets="PackNative" />
24 <ProjectReference Include="wixext\WixToolset.BootstrapperApplications.wixext.csproj" Properties="NoBuild=true" Targets="Pack" /> 16 <ProjectReference Include="wixext\WixToolset.BootstrapperApplications.wixext.csproj" Properties="NoBuild=true" Targets="Pack" />
25 <ProjectReference Include="wixext-backward-compatible\WixToolset.Bal.wixext.csproj" Targets="Pack" /> 17 <ProjectReference Include="wixext-backward-compatible\WixToolset.Bal.wixext.csproj" Targets="Pack" />
18
19 <ProjectReference Include="test\examples\examples.proj" />
20
21 <!--
22 Currently there are no unskipped unit tests in this project. Should that change,
23 we'll need to update the native test framework or figure out something else.
24
25 <ProjectReference Include="ext\Bal\test\WixStdFnUnitTest\WixStdFnUnitTest.vcxproj" />
26 -->
26 </ItemGroup> 27 </ItemGroup>
28
29 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
30 <RemoveDir Directories="$(RootBuildFolder)Bal.wixext" />
31 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.bal.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
32 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.bal.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
33 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.bootstrapperapplications.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
34 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.bootstrapperapplications.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
35 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.wixstandardbootstrapperapplicationfunctionapi.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
36 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.wixstandardbootstrapperapplicationfunctionapi.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
37
38 <Delete Files="$(ArtifactsFolder)WixToolset.Bal.wixext.*.nupkg" />
39 <Delete Files="$(ArtifactsFolder)WixToolset.BootstrapperApplications.wixext.*.nupkg" />
40 <Delete Files="$(ArtifactsFolder)WixToolset.WixStandardBootstrapperApplicationFunctionApi.wixext.*.nupkg" />
41 </Target>
27</Project> 42</Project>
diff --git a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/BalExtensionFixture.cs b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/BalExtensionFixture.cs
index 2e21ef90..6e24ad72 100644
--- a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/BalExtensionFixture.cs
+++ b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/BalExtensionFixture.cs
@@ -6,13 +6,14 @@ namespace WixToolsetTest.BootstrapperApplications
6 using System.Collections.Generic; 6 using System.Collections.Generic;
7 using System.IO; 7 using System.IO;
8 using System.Linq; 8 using System.Linq;
9 using WixInternal.Core.TestPackage; 9 using Microsoft.VisualStudio.TestTools.UnitTesting;
10 using WixInternal.TestSupport; 10 using WixInternal.Core.MSTestPackage;
11 using Xunit; 11 using WixInternal.MSTestSupport;
12 12
13 [TestClass]
13 public class BalExtensionFixture 14 public class BalExtensionFixture
14 { 15 {
15 [Fact] 16 [TestMethod]
16 public void CanBuildUsingDisplayInternalUICondition() 17 public void CanBuildUsingDisplayInternalUICondition()
17 { 18 {
18 using (var fs = new DisposableFileSystem()) 19 using (var fs = new DisposableFileSystem())
@@ -35,7 +36,7 @@ namespace WixToolsetTest.BootstrapperApplications
35 }); 36 });
36 compileResult.AssertSuccess(); 37 compileResult.AssertSuccess();
37 38
38 Assert.True(File.Exists(bundleFile)); 39 Assert.IsTrue(File.Exists(bundleFile));
39 40
40 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath); 41 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath);
41 extractResult.AssertSuccess(); 42 extractResult.AssertSuccess();
@@ -46,11 +47,11 @@ namespace WixToolsetTest.BootstrapperApplications
46 "<WixBalPackageInfo PackageId='test.msi' DisplayInternalUICondition='1' />", 47 "<WixBalPackageInfo PackageId='test.msi' DisplayInternalUICondition='1' />",
47 }, balPackageInfos); 48 }, balPackageInfos);
48 49
49 Assert.True(File.Exists(Path.Combine(baFolderPath, "thm.wxl"))); 50 Assert.IsTrue(File.Exists(Path.Combine(baFolderPath, "thm.wxl")));
50 } 51 }
51 } 52 }
52 53
53 [Fact] 54 [TestMethod]
54 public void CanBuildUsingBootstrapperApplicationId() 55 public void CanBuildUsingBootstrapperApplicationId()
55 { 56 {
56 using (var fs = new DisposableFileSystem()) 57 using (var fs = new DisposableFileSystem())
@@ -73,7 +74,7 @@ namespace WixToolsetTest.BootstrapperApplications
73 }); 74 });
74 compileResult.AssertSuccess(); 75 compileResult.AssertSuccess();
75 76
76 Assert.True(File.Exists(bundleFile)); 77 Assert.IsTrue(File.Exists(bundleFile));
77 78
78 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath); 79 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath);
79 extractResult.AssertSuccess(); 80 extractResult.AssertSuccess();
@@ -91,7 +92,7 @@ namespace WixToolsetTest.BootstrapperApplications
91 } 92 }
92 } 93 }
93 94
94 [Fact] 95 [TestMethod]
95 public void CanBuildUsingOverridable() 96 public void CanBuildUsingOverridable()
96 { 97 {
97 using (var fs = new DisposableFileSystem()) 98 using (var fs = new DisposableFileSystem())
@@ -113,7 +114,7 @@ namespace WixToolsetTest.BootstrapperApplications
113 }); 114 });
114 compileResult.AssertSuccess(); 115 compileResult.AssertSuccess();
115 116
116 Assert.True(File.Exists(bundleFile)); 117 Assert.IsTrue(File.Exists(bundleFile));
117 118
118 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath); 119 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath);
119 extractResult.AssertSuccess(); 120 extractResult.AssertSuccess();
@@ -132,7 +133,7 @@ namespace WixToolsetTest.BootstrapperApplications
132 } 133 }
133 } 134 }
134 135
135 [Fact] 136 [TestMethod]
136 public void CanBuildUsingWixStdBa() 137 public void CanBuildUsingWixStdBa()
137 { 138 {
138 using (var fs = new DisposableFileSystem()) 139 using (var fs = new DisposableFileSystem())
@@ -152,11 +153,11 @@ namespace WixToolsetTest.BootstrapperApplications
152 }); 153 });
153 compileResult.AssertSuccess(); 154 compileResult.AssertSuccess();
154 155
155 Assert.True(File.Exists(bundleFile)); 156 Assert.IsTrue(File.Exists(bundleFile));
156 } 157 }
157 } 158 }
158 159
159 //[Fact] 160 // [TestMethod]
160 //public void CanBuildUsingMBAWithAlwaysInstallPrereqs() 161 //public void CanBuildUsingMBAWithAlwaysInstallPrereqs()
161 //{ 162 //{
162 // using (var fs = new DisposableFileSystem()) 163 // using (var fs = new DisposableFileSystem())
@@ -179,7 +180,7 @@ namespace WixToolsetTest.BootstrapperApplications
179 180
180 // compileResult.AssertSuccess(); 181 // compileResult.AssertSuccess();
181 182
182 // Assert.True(File.Exists(bundleFile)); 183 // Assert.IsTrue(File.Exists(bundleFile));
183 184
184 // var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath); 185 // var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath);
185 // extractResult.AssertSuccess(); 186 // extractResult.AssertSuccess();
@@ -198,7 +199,7 @@ namespace WixToolsetTest.BootstrapperApplications
198 // } 199 // }
199 //} 200 //}
200 201
201 [Fact] 202 [TestMethod]
202 public void CannotBuildUsingMBAWithNoPrereqs() 203 public void CannotBuildUsingMBAWithNoPrereqs()
203 { 204 {
204 using (var fs = new DisposableFileSystem()) 205 using (var fs = new DisposableFileSystem())
@@ -223,14 +224,14 @@ namespace WixToolsetTest.BootstrapperApplications
223 { 224 {
224 "The WixManagedBootstrapperApplicationHost element has been deprecated.", 225 "The WixManagedBootstrapperApplicationHost element has been deprecated.",
225 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 226 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
226 Assert.Equal(1130, compileResult.ExitCode); 227 Assert.AreEqual(1130, compileResult.ExitCode);
227 228
228 Assert.False(File.Exists(bundleFile)); 229 Assert.IsFalse(File.Exists(bundleFile));
229 Assert.False(File.Exists(Path.Combine(intermediateFolder, "test.exe"))); 230 Assert.IsFalse(File.Exists(Path.Combine(intermediateFolder, "test.exe")));
230 } 231 }
231 } 232 }
232 233
233 [Fact] 234 [TestMethod]
234 public void CannotBuildUsingDncbaMissingBAFactoryPayload() 235 public void CannotBuildUsingDncbaMissingBAFactoryPayload()
235 { 236 {
236 using (var fs = new DisposableFileSystem()) 237 using (var fs = new DisposableFileSystem())
@@ -254,14 +255,14 @@ namespace WixToolsetTest.BootstrapperApplications
254 "The WixDotNetCoreBootstrapperApplicationHost element has been deprecated.", 255 "The WixDotNetCoreBootstrapperApplicationHost element has been deprecated.",
255 "The BootstrapperApplication element's Name or SourceFile attribute was not found; one of these is required." 256 "The BootstrapperApplication element's Name or SourceFile attribute was not found; one of these is required."
256 }, compileResult.Messages.Select(x => x.ToString()).ToArray()); 257 }, compileResult.Messages.Select(x => x.ToString()).ToArray());
257 Assert.Equal(44, compileResult.ExitCode); 258 Assert.AreEqual(44, compileResult.ExitCode);
258 259
259 Assert.False(File.Exists(bundleFile)); 260 Assert.IsFalse(File.Exists(bundleFile));
260 Assert.False(File.Exists(Path.Combine(intermediateFolder, "test.exe"))); 261 Assert.IsFalse(File.Exists(Path.Combine(intermediateFolder, "test.exe")));
261 } 262 }
262 } 263 }
263 264
264 [Fact] 265 [TestMethod]
265 public void CannotBuildUsingOverridableWrongCase() 266 public void CannotBuildUsingOverridableWrongCase()
266 { 267 {
267 using (var fs = new DisposableFileSystem()) 268 using (var fs = new DisposableFileSystem())
@@ -284,7 +285,7 @@ namespace WixToolsetTest.BootstrapperApplications
284 "-o", bundleFile, 285 "-o", bundleFile,
285 }); 286 });
286 287
287 Assert.InRange(result.ExitCode, 2, Int32.MaxValue); 288 Assert.IsTrue(result.ExitCode >= 2 && result.ExitCode <= Int32.MaxValue);
288 289
289 var messages = result.Messages.Select(m => m.ToString()).ToList(); 290 var messages = result.Messages.Select(m => m.ToString()).ToList();
290 messages.Sort(); 291 messages.Sort();
diff --git a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/InternalUIBAFixture.cs b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/InternalUIBAFixture.cs
index 58d5d551..72e31540 100644
--- a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/InternalUIBAFixture.cs
+++ b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/InternalUIBAFixture.cs
@@ -5,13 +5,14 @@ namespace WixToolsetTest.BootstrapperApplications
5 using System.IO; 5 using System.IO;
6 using System.Linq; 6 using System.Linq;
7 using System.Xml; 7 using System.Xml;
8 using WixInternal.Core.TestPackage; 8 using Microsoft.VisualStudio.TestTools.UnitTesting;
9 using WixInternal.TestSupport; 9 using WixInternal.Core.MSTestPackage;
10 using Xunit; 10 using WixInternal.MSTestSupport;
11 11
12 [TestClass]
12 public class InternalUIBAFixture 13 public class InternalUIBAFixture
13 { 14 {
14 [Fact] 15 [TestMethod]
15 public void CanBuildUsingWixIuiBa() 16 public void CanBuildUsingWixIuiBa()
16 { 17 {
17 using (var fs = new DisposableFileSystem()) 18 using (var fs = new DisposableFileSystem())
@@ -34,7 +35,7 @@ namespace WixToolsetTest.BootstrapperApplications
34 }); 35 });
35 compileResult.AssertSuccess(); 36 compileResult.AssertSuccess();
36 37
37 Assert.True(File.Exists(bundleFile)); 38 Assert.IsTrue(File.Exists(bundleFile));
38 39
39 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath); 40 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath);
40 extractResult.AssertSuccess(); 41 extractResult.AssertSuccess();
@@ -45,12 +46,12 @@ namespace WixToolsetTest.BootstrapperApplications
45 "<WixBalPackageInfo PackageId='test.msi' PrimaryPackageType='default' />", 46 "<WixBalPackageInfo PackageId='test.msi' PrimaryPackageType='default' />",
46 }, balPackageInfos); 47 }, balPackageInfos);
47 48
48 Assert.True(File.Exists(Path.Combine(baFolderPath, "wixpreq.thm"))); 49 Assert.IsTrue(File.Exists(Path.Combine(baFolderPath, "wixpreq.thm")));
49 Assert.True(File.Exists(Path.Combine(baFolderPath, "wixpreq.wxl"))); 50 Assert.IsTrue(File.Exists(Path.Combine(baFolderPath, "wixpreq.wxl")));
50 } 51 }
51 } 52 }
52 53
53 [Fact] 54 [TestMethod]
54 public void CanBuildUsingWixIuiBaWithUrlPrereqPackage() 55 public void CanBuildUsingWixIuiBaWithUrlPrereqPackage()
55 { 56 {
56 using (var fs = new DisposableFileSystem()) 57 using (var fs = new DisposableFileSystem())
@@ -73,7 +74,7 @@ namespace WixToolsetTest.BootstrapperApplications
73 }); 74 });
74 compileResult.AssertSuccess(); 75 compileResult.AssertSuccess();
75 76
76 Assert.True(File.Exists(bundleFile)); 77 Assert.IsTrue(File.Exists(bundleFile));
77 78
78 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath); 79 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath);
79 extractResult.AssertSuccess(); 80 extractResult.AssertSuccess();
@@ -90,12 +91,12 @@ namespace WixToolsetTest.BootstrapperApplications
90 "<WixPrereqInformation PackageId='wixnative.exe' LicenseUrl='https://www.mysite.com/prereqterms' />", 91 "<WixPrereqInformation PackageId='wixnative.exe' LicenseUrl='https://www.mysite.com/prereqterms' />",
91 }, mbaPrereqInfos); 92 }, mbaPrereqInfos);
92 93
93 Assert.True(File.Exists(Path.Combine(baFolderPath, "wixpreq.thm"))); 94 Assert.IsTrue(File.Exists(Path.Combine(baFolderPath, "wixpreq.thm")));
94 Assert.True(File.Exists(Path.Combine(baFolderPath, "wixpreq.wxl"))); 95 Assert.IsTrue(File.Exists(Path.Combine(baFolderPath, "wixpreq.wxl")));
95 } 96 }
96 } 97 }
97 98
98 [Fact] 99 [TestMethod]
99 public void CanBuildUsingWixIuiBaWithImplicitPrimaryPackage() 100 public void CanBuildUsingWixIuiBaWithImplicitPrimaryPackage()
100 { 101 {
101 using (var fs = new DisposableFileSystem()) 102 using (var fs = new DisposableFileSystem())
@@ -118,7 +119,7 @@ namespace WixToolsetTest.BootstrapperApplications
118 }); 119 });
119 compileResult.AssertSuccess(); 120 compileResult.AssertSuccess();
120 121
121 Assert.True(File.Exists(bundleFile)); 122 Assert.IsTrue(File.Exists(bundleFile));
122 123
123 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath); 124 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath);
124 extractResult.AssertSuccess(); 125 extractResult.AssertSuccess();
@@ -135,12 +136,12 @@ namespace WixToolsetTest.BootstrapperApplications
135 "<WixPrereqInformation PackageId='wixnative.exe' />", 136 "<WixPrereqInformation PackageId='wixnative.exe' />",
136 }, mbaPrereqInfos); 137 }, mbaPrereqInfos);
137 138
138 Assert.True(File.Exists(Path.Combine(baFolderPath, "wixpreq.thm"))); 139 Assert.IsTrue(File.Exists(Path.Combine(baFolderPath, "wixpreq.thm")));
139 Assert.True(File.Exists(Path.Combine(baFolderPath, "wixpreq.wxl"))); 140 Assert.IsTrue(File.Exists(Path.Combine(baFolderPath, "wixpreq.wxl")));
140 } 141 }
141 } 142 }
142 143
143 [Fact] 144 [TestMethod]
144 public void CanBuildUsingWixIuiBaWithWarnings() 145 public void CanBuildUsingWixIuiBaWithWarnings()
145 { 146 {
146 using (var fs = new DisposableFileSystem()) 147 using (var fs = new DisposableFileSystem())
@@ -172,7 +173,7 @@ namespace WixToolsetTest.BootstrapperApplications
172 173
173 compileResult.AssertSuccess(); 174 compileResult.AssertSuccess();
174 175
175 Assert.True(File.Exists(bundleFile)); 176 Assert.IsTrue(File.Exists(bundleFile));
176 177
177 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath); 178 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath);
178 extractResult.AssertSuccess(); 179 extractResult.AssertSuccess();
@@ -189,12 +190,12 @@ namespace WixToolsetTest.BootstrapperApplications
189 "<WixPrereqInformation PackageId='wixnative.exe' />", 190 "<WixPrereqInformation PackageId='wixnative.exe' />",
190 }, mbaPrereqInfos); 191 }, mbaPrereqInfos);
191 192
192 Assert.True(File.Exists(Path.Combine(baFolderPath, "wixpreq.thm"))); 193 Assert.IsTrue(File.Exists(Path.Combine(baFolderPath, "wixpreq.thm")));
193 Assert.True(File.Exists(Path.Combine(baFolderPath, "wixpreq.wxl"))); 194 Assert.IsTrue(File.Exists(Path.Combine(baFolderPath, "wixpreq.wxl")));
194 } 195 }
195 } 196 }
196 197
197 [Fact] 198 [TestMethod]
198 public void CanBuildUsingWixIuiBaAndForcedCachePrimaryPackage() 199 public void CanBuildUsingWixIuiBaAndForcedCachePrimaryPackage()
199 { 200 {
200 using (var fs = new DisposableFileSystem()) 201 using (var fs = new DisposableFileSystem())
@@ -218,7 +219,7 @@ namespace WixToolsetTest.BootstrapperApplications
218 219
219 compileResult.AssertSuccess(); 220 compileResult.AssertSuccess();
220 221
221 Assert.True(File.Exists(bundleFile)); 222 Assert.IsTrue(File.Exists(bundleFile));
222 223
223 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath); 224 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFile, baFolderPath, extractFolderPath);
224 extractResult.AssertSuccess(); 225 extractResult.AssertSuccess();
@@ -239,8 +240,8 @@ namespace WixToolsetTest.BootstrapperApplications
239 "<WixPrereqInformation PackageId='wixnative.exe' />", 240 "<WixPrereqInformation PackageId='wixnative.exe' />",
240 }, mbaPrereqInfos); 241 }, mbaPrereqInfos);
241 242
242 Assert.True(File.Exists(Path.Combine(baFolderPath, "wixpreq.thm"))); 243 Assert.IsTrue(File.Exists(Path.Combine(baFolderPath, "wixpreq.thm")));
243 Assert.True(File.Exists(Path.Combine(baFolderPath, "wixpreq.wxl"))); 244 Assert.IsTrue(File.Exists(Path.Combine(baFolderPath, "wixpreq.wxl")));
244 } 245 }
245 246
246 static void AssertCacheType(XmlNode node) 247 static void AssertCacheType(XmlNode node)
@@ -251,16 +252,16 @@ namespace WixToolsetTest.BootstrapperApplications
251 252
252 if (package == "test.msi") 253 if (package == "test.msi")
253 { 254 {
254 Assert.Equal("force", cache); 255 Assert.AreEqual("force", cache);
255 } 256 }
256 else if (package == "wixnative.exe") 257 else if (package == "wixnative.exe")
257 { 258 {
258 Assert.Equal("keep", cache); 259 Assert.AreEqual("keep", cache);
259 } 260 }
260 } 261 }
261 } 262 }
262 263
263 [Fact] 264 [TestMethod]
264 public void CannotBuildUsingWixIuiBaWithAllPrereqPackages() 265 public void CannotBuildUsingWixIuiBaWithAllPrereqPackages()
265 { 266 {
266 using (var fs = new DisposableFileSystem()) 267 using (var fs = new DisposableFileSystem())
@@ -285,11 +286,11 @@ namespace WixToolsetTest.BootstrapperApplications
285 "When using WixInternalUIBootstrapperApplication, there must be one package with bal:PrimaryPackageType=\"default\".", 286 "When using WixInternalUIBootstrapperApplication, there must be one package with bal:PrimaryPackageType=\"default\".",
286 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 287 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
287 288
288 Assert.Equal(6808, compileResult.ExitCode); 289 Assert.AreEqual(6808, compileResult.ExitCode);
289 } 290 }
290 } 291 }
291 292
292 [Fact] 293 [TestMethod]
293 public void CannotBuildUsingWixIuiBaWithImplicitNonMsiPrimaryPackage() 294 public void CannotBuildUsingWixIuiBaWithImplicitNonMsiPrimaryPackage()
294 { 295 {
295 using (var fs = new DisposableFileSystem()) 296 using (var fs = new DisposableFileSystem())
@@ -314,11 +315,11 @@ namespace WixToolsetTest.BootstrapperApplications
314 "When using WixInternalUIBootstrapperApplication, packages must either be non-permanent and have the bal:PrimaryPackageType attribute, or be permanent and have the bal:PrereqPackage attribute set to 'yes'.", 315 "When using WixInternalUIBootstrapperApplication, packages must either be non-permanent and have the bal:PrimaryPackageType attribute, or be permanent and have the bal:PrereqPackage attribute set to 'yes'.",
315 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 316 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
316 317
317 Assert.Equal(6811, compileResult.ExitCode); 318 Assert.AreEqual(6811, compileResult.ExitCode);
318 } 319 }
319 } 320 }
320 321
321 [Fact] 322 [TestMethod]
322 public void CannotBuildUsingWixIuiBaWithImplicitPrimaryPackageEnableFeatureSelection() 323 public void CannotBuildUsingWixIuiBaWithImplicitPrimaryPackageEnableFeatureSelection()
323 { 324 {
324 using (var fs = new DisposableFileSystem()) 325 using (var fs = new DisposableFileSystem())
@@ -343,11 +344,11 @@ namespace WixToolsetTest.BootstrapperApplications
343 "When using WixInternalUIBootstrapperApplication, packages must either be non-permanent and have the bal:PrimaryPackageType attribute, or be permanent and have the bal:PrereqPackage attribute set to 'yes'.", 344 "When using WixInternalUIBootstrapperApplication, packages must either be non-permanent and have the bal:PrimaryPackageType attribute, or be permanent and have the bal:PrereqPackage attribute set to 'yes'.",
344 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 345 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
345 346
346 Assert.Equal(6811, compileResult.ExitCode); 347 Assert.AreEqual(6811, compileResult.ExitCode);
347 } 348 }
348 } 349 }
349 350
350 [Fact] 351 [TestMethod]
351 public void CannotBuildUsingWixIuiBaWithMultipleNonPermanentNonPrimaryPackages() 352 public void CannotBuildUsingWixIuiBaWithMultipleNonPermanentNonPrimaryPackages()
352 { 353 {
353 using (var fs = new DisposableFileSystem()) 354 using (var fs = new DisposableFileSystem())
@@ -373,11 +374,11 @@ namespace WixToolsetTest.BootstrapperApplications
373 "When using WixInternalUIBootstrapperApplication, packages must either be non-permanent and have the bal:PrimaryPackageType attribute, or be permanent and have the bal:PrereqPackage attribute set to 'yes'.", 374 "When using WixInternalUIBootstrapperApplication, packages must either be non-permanent and have the bal:PrimaryPackageType attribute, or be permanent and have the bal:PrereqPackage attribute set to 'yes'.",
374 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 375 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
375 376
376 Assert.Equal(6811, compileResult.ExitCode); 377 Assert.AreEqual(6811, compileResult.ExitCode);
377 } 378 }
378 } 379 }
379 380
380 [Fact] 381 [TestMethod]
381 public void CannotBuildUsingWixIuiBaWithMultiplePrimaryPackagesOfSameType() 382 public void CannotBuildUsingWixIuiBaWithMultiplePrimaryPackagesOfSameType()
382 { 383 {
383 using (var fs = new DisposableFileSystem()) 384 using (var fs = new DisposableFileSystem())
@@ -403,11 +404,11 @@ namespace WixToolsetTest.BootstrapperApplications
403 "The location of the package related to the previous error.", 404 "The location of the package related to the previous error.",
404 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 405 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
405 406
406 Assert.Equal(6810, compileResult.ExitCode); 407 Assert.AreEqual(6810, compileResult.ExitCode);
407 } 408 }
408 } 409 }
409 410
410 [Fact] 411 [TestMethod]
411 public void CannotBuildUsingWixIuiBaWithNoDefaultPrimaryPackage() 412 public void CannotBuildUsingWixIuiBaWithNoDefaultPrimaryPackage()
412 { 413 {
413 using (var fs = new DisposableFileSystem()) 414 using (var fs = new DisposableFileSystem())
@@ -432,11 +433,11 @@ namespace WixToolsetTest.BootstrapperApplications
432 "When using WixInternalUIBootstrapperApplication, there must be one package with bal:PrimaryPackageType=\"default\".", 433 "When using WixInternalUIBootstrapperApplication, there must be one package with bal:PrimaryPackageType=\"default\".",
433 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 434 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
434 435
435 Assert.Equal(6808, compileResult.ExitCode); 436 Assert.AreEqual(6808, compileResult.ExitCode);
436 } 437 }
437 } 438 }
438 439
439 [Fact] 440 [TestMethod]
440 public void CannotBuildUsingWixIuiBaWithNonMsiPrimaryPackage() 441 public void CannotBuildUsingWixIuiBaWithNonMsiPrimaryPackage()
441 { 442 {
442 using (var fs = new DisposableFileSystem()) 443 using (var fs = new DisposableFileSystem())
@@ -461,11 +462,11 @@ namespace WixToolsetTest.BootstrapperApplications
461 "When using WixInternalUIBootstrapperApplication, each primary package must be an MsiPackage.", 462 "When using WixInternalUIBootstrapperApplication, each primary package must be an MsiPackage.",
462 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 463 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
463 464
464 Assert.Equal(6814, compileResult.ExitCode); 465 Assert.AreEqual(6814, compileResult.ExitCode);
465 } 466 }
466 } 467 }
467 468
468 [Fact] 469 [TestMethod]
469 public void CannotBuildUsingWixIuiBaWithNonPermanentPrereqPackage() 470 public void CannotBuildUsingWixIuiBaWithNonPermanentPrereqPackage()
470 { 471 {
471 using (var fs = new DisposableFileSystem()) 472 using (var fs = new DisposableFileSystem())
@@ -490,11 +491,11 @@ namespace WixToolsetTest.BootstrapperApplications
490 "When using WixInternalUIBootstrapperApplication and bal:PrereqPackage is set to 'yes', the package must be permanent.", 491 "When using WixInternalUIBootstrapperApplication and bal:PrereqPackage is set to 'yes', the package must be permanent.",
491 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 492 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
492 493
493 Assert.Equal(6812, compileResult.ExitCode); 494 Assert.AreEqual(6812, compileResult.ExitCode);
494 } 495 }
495 } 496 }
496 497
497 [Fact] 498 [TestMethod]
498 public void CannotBuildUsingWixIuiBaWithPermanentPrimaryPackage() 499 public void CannotBuildUsingWixIuiBaWithPermanentPrimaryPackage()
499 { 500 {
500 using (var fs = new DisposableFileSystem()) 501 using (var fs = new DisposableFileSystem())
@@ -520,11 +521,11 @@ namespace WixToolsetTest.BootstrapperApplications
520 "When using WixInternalUIBootstrapperApplication, there must be one package with bal:PrimaryPackageType=\"default\".", 521 "When using WixInternalUIBootstrapperApplication, there must be one package with bal:PrimaryPackageType=\"default\".",
521 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 522 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
522 523
523 Assert.Equal(6808, compileResult.ExitCode); 524 Assert.AreEqual(6808, compileResult.ExitCode);
524 } 525 }
525 } 526 }
526 527
527 [Fact] 528 [TestMethod]
528 public void CannotBuildUsingWixIuiBaWithPrimaryPackageEnableFeatureSelection() 529 public void CannotBuildUsingWixIuiBaWithPrimaryPackageEnableFeatureSelection()
529 { 530 {
530 using (var fs = new DisposableFileSystem()) 531 using (var fs = new DisposableFileSystem())
@@ -550,11 +551,11 @@ namespace WixToolsetTest.BootstrapperApplications
550 "When using WixInternalUIBootstrapperApplication, there must be one package with bal:PrimaryPackageType=\"default\".", 551 "When using WixInternalUIBootstrapperApplication, there must be one package with bal:PrimaryPackageType=\"default\".",
551 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 552 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
552 553
553 Assert.Equal(6808, compileResult.ExitCode); 554 Assert.AreEqual(6808, compileResult.ExitCode);
554 } 555 }
555 } 556 }
556 557
557 [Fact] 558 [TestMethod]
558 public void CannotBuildUsingWixIuiBaWithPrimaryPrereqPackage() 559 public void CannotBuildUsingWixIuiBaWithPrimaryPrereqPackage()
559 { 560 {
560 using (var fs = new DisposableFileSystem()) 561 using (var fs = new DisposableFileSystem())
@@ -578,7 +579,7 @@ namespace WixToolsetTest.BootstrapperApplications
578 "The MsiPackage/@PrereqPackage attribute's value, 'yes', cannot be specified with attribute PrimaryPackageType present.", 579 "The MsiPackage/@PrereqPackage attribute's value, 'yes', cannot be specified with attribute PrimaryPackageType present.",
579 }, compileResult.Messages.Select(m => m.ToString()).ToArray()); 580 }, compileResult.Messages.Select(m => m.ToString()).ToArray());
580 581
581 Assert.Equal(193, compileResult.ExitCode); 582 Assert.AreEqual(193, compileResult.ExitCode);
582 } 583 }
583 } 584 }
584 } 585 }
diff --git a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/WixToolsetTest.BootstrapperApplications.csproj b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/WixToolsetTest.BootstrapperApplications.csproj
index 64fc297c..6a9b5856 100644
--- a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/WixToolsetTest.BootstrapperApplications.csproj
+++ b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/WixToolsetTest.BootstrapperApplications.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -20,6 +20,7 @@
20 </ItemGroup> 20 </ItemGroup>
21 21
22 <ItemGroup> 22 <ItemGroup>
23 <PackageReference Include="WixInternal.Core.TestPackage" /> 23 <PackageReference Include="WixInternal.MSTestSupport" />
24 <PackageReference Include="WixInternal.Core.MSTestPackage" />
24 </ItemGroup> 25 </ItemGroup>
25</Project> 26</Project>
diff --git a/src/ext/ComPlus/complus.cmd b/src/ext/ComPlus/complus.cmd
deleted file mode 100644
index 3b3a5772..00000000
--- a/src/ext/ComPlus/complus.cmd
+++ /dev/null
@@ -1,21 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5:parse_args
6@if /i "%1"=="release" set _C=Release
7@if not "%1"=="" shift & goto parse_args
8
9@echo ComPlus.wixext build %_C%
10
11:: Build
12msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror || exit /b
13
14:: Test
15dotnet test -c %_C% --no-build test\WixToolsetTest.ComPlus || exit /b
16
17:: Pack
18msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.ComPlus.wixext.csproj || exit /b
19
20@popd
21@endlocal \ No newline at end of file
diff --git a/src/ext/ComPlus/complus_t.proj b/src/ext/ComPlus/complus_t.proj
new file mode 100644
index 00000000..439856b6
--- /dev/null
+++ b/src/ext/ComPlus/complus_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.ComPlus\WixToolsetTest.ComPlus.csproj" />
7 <ProjectReference Include="wixext\WixToolset.ComPlus.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)complus.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.complus.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.complus.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.ComPlus.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/ComPlus/test/WixToolsetTest.ComPlus/ComPlusExtensionFixture.cs b/src/ext/ComPlus/test/WixToolsetTest.ComPlus/ComPlusExtensionFixture.cs
index 17c5eb0f..7b38ef54 100644
--- a/src/ext/ComPlus/test/WixToolsetTest.ComPlus/ComPlusExtensionFixture.cs
+++ b/src/ext/ComPlus/test/WixToolsetTest.ComPlus/ComPlusExtensionFixture.cs
@@ -3,14 +3,15 @@
3namespace WixToolsetTest.ComPlus 3namespace WixToolsetTest.ComPlus
4{ 4{
5 using System.Linq; 5 using System.Linq;
6 using WixInternal.TestSupport; 6 using Microsoft.VisualStudio.TestTools.UnitTesting;
7 using WixInternal.Core.TestPackage; 7 using WixInternal.MSTestSupport;
8 using WixInternal.Core.MSTestPackage;
8 using WixToolset.ComPlus; 9 using WixToolset.ComPlus;
9 using Xunit;
10 10
11 [TestClass]
11 public class ComPlusExtensionFixture 12 public class ComPlusExtensionFixture
12 { 13 {
13 [Fact] 14 [TestMethod]
14 public void CanBuildUsingComPlusPartition() 15 public void CanBuildUsingComPlusPartition()
15 { 16 {
16 var folder = TestData.Get(@"TestData\UsingComPlusPartition"); 17 var folder = TestData.Get(@"TestData\UsingComPlusPartition");
diff --git a/src/ext/ComPlus/test/WixToolsetTest.ComPlus/WixToolsetTest.ComPlus.csproj b/src/ext/ComPlus/test/WixToolsetTest.ComPlus/WixToolsetTest.ComPlus.csproj
index a9e9dbef..d0a7081b 100644
--- a/src/ext/ComPlus/test/WixToolsetTest.ComPlus/WixToolsetTest.ComPlus.csproj
+++ b/src/ext/ComPlus/test/WixToolsetTest.ComPlus/WixToolsetTest.ComPlus.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -16,6 +16,7 @@
16 </ItemGroup> 16 </ItemGroup>
17 17
18 <ItemGroup> 18 <ItemGroup>
19 <PackageReference Include="WixInternal.Core.TestPackage" /> 19 <PackageReference Include="WixInternal.MSTestSupport" />
20 <PackageReference Include="WixInternal.Core.MSTestPackage" />
20 </ItemGroup> 21 </ItemGroup>
21</Project> 22</Project>
diff --git a/src/ext/Dependency/dependency.cmd b/src/ext/Dependency/dependency.cmd
deleted file mode 100644
index 0ebcbfd5..00000000
--- a/src/ext/Dependency/dependency.cmd
+++ /dev/null
@@ -1,21 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5:parse_args
6@if /i "%1"=="release" set _C=Release
7@if not "%1"=="" shift & goto parse_args
8
9@echo Dependency.wixext build %_C%
10
11:: Build
12msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror || exit /b
13
14:: Test
15dotnet test -c %_C% --no-build test\WixToolsetTest.Dependency || exit /b
16
17:: Pack
18msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.Dependency.wixext.csproj || exit /b
19
20@popd
21@endlocal
diff --git a/src/ext/Dependency/dependency_t.proj b/src/ext/Dependency/dependency_t.proj
new file mode 100644
index 00000000..d05b8de9
--- /dev/null
+++ b/src/ext/Dependency/dependency_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.Dependency\WixToolsetTest.Dependency.csproj" />
7 <ProjectReference Include="wixext\WixToolset.Dependency.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)dependency.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.dependency.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.dependency.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.Dependency.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/Dependency/test/WixToolsetTest.Dependency/DependencyExtensionFixture.cs b/src/ext/Dependency/test/WixToolsetTest.Dependency/DependencyExtensionFixture.cs
index 6190a4e0..ade2a12e 100644
--- a/src/ext/Dependency/test/WixToolsetTest.Dependency/DependencyExtensionFixture.cs
+++ b/src/ext/Dependency/test/WixToolsetTest.Dependency/DependencyExtensionFixture.cs
@@ -4,14 +4,15 @@ namespace WixToolsetTest.Dependency
4{ 4{
5 using System.Linq; 5 using System.Linq;
6 using System.Text.RegularExpressions; 6 using System.Text.RegularExpressions;
7 using WixInternal.TestSupport; 7 using Microsoft.VisualStudio.TestTools.UnitTesting;
8 using WixInternal.Core.TestPackage; 8 using WixInternal.MSTestSupport;
9 using WixInternal.Core.MSTestPackage;
9 using WixToolset.Dependency; 10 using WixToolset.Dependency;
10 using Xunit;
11 11
12 [TestClass]
12 public class DependencyExtensionFixture 13 public class DependencyExtensionFixture
13 { 14 {
14 [Fact] 15 [TestMethod]
15 public void CanBuildUsingProvides() 16 public void CanBuildUsingProvides()
16 { 17 {
17 var folder = TestData.Get(@"TestData\UsingProvides"); 18 var folder = TestData.Get(@"TestData\UsingProvides");
diff --git a/src/ext/Dependency/test/WixToolsetTest.Dependency/WixToolsetTest.Dependency.csproj b/src/ext/Dependency/test/WixToolsetTest.Dependency/WixToolsetTest.Dependency.csproj
index 70b56f45..1fd46c63 100644
--- a/src/ext/Dependency/test/WixToolsetTest.Dependency/WixToolsetTest.Dependency.csproj
+++ b/src/ext/Dependency/test/WixToolsetTest.Dependency/WixToolsetTest.Dependency.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -16,6 +16,7 @@
16 </ItemGroup> 16 </ItemGroup>
17 17
18 <ItemGroup> 18 <ItemGroup>
19 <PackageReference Include="WixInternal.Core.TestPackage" /> 19 <PackageReference Include="WixInternal.MSTestSupport" />
20 <PackageReference Include="WixInternal.Core.MSTestPackage" />
20 </ItemGroup> 21 </ItemGroup>
21</Project> 22</Project>
diff --git a/src/ext/DirectX/directx.cmd b/src/ext/DirectX/directx.cmd
deleted file mode 100644
index 56889513..00000000
--- a/src/ext/DirectX/directx.cmd
+++ /dev/null
@@ -1,24 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5:parse_args
6@if /i "%1"=="release" set _C=Release
7@if not "%1"=="" shift & goto parse_args
8
9@echo DirectX.wixext build %_C%
10
11:: Restore
12msbuild -t:Restore -p:Configuration=%_C% -tl -nologo -warnaserror || exit /b
13
14:: Build
15msbuild -t:Build -p:Configuration=%_C% -tl -nologo -warnaserror test\WixToolsetTest.DirectX\WixToolsetTest.DirectX.csproj || exit /b
16
17:: Test
18dotnet test -c %_C% --no-build test\WixToolsetTest.DirectX || exit /b
19
20:: Pack
21msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror wixext\WixToolset.DirectX.wixext.csproj || exit /b
22
23@popd
24@endlocal
diff --git a/src/ext/DirectX/directx_t.proj b/src/ext/DirectX/directx_t.proj
new file mode 100644
index 00000000..17b147ef
--- /dev/null
+++ b/src/ext/DirectX/directx_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.DirectX\WixToolsetTest.DirectX.csproj" />
7 <ProjectReference Include="wixext\WixToolset.DirectX.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)directx.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.directx.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.directx.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.DirectX.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/DirectX/test/WixToolsetTest.DirectX/DirectXExtensionFixture.cs b/src/ext/DirectX/test/WixToolsetTest.DirectX/DirectXExtensionFixture.cs
index 64013ca6..dceaaec5 100644
--- a/src/ext/DirectX/test/WixToolsetTest.DirectX/DirectXExtensionFixture.cs
+++ b/src/ext/DirectX/test/WixToolsetTest.DirectX/DirectXExtensionFixture.cs
@@ -3,14 +3,15 @@
3namespace WixToolsetTest.DirectX 3namespace WixToolsetTest.DirectX
4{ 4{
5 using System.Linq; 5 using System.Linq;
6 using WixInternal.TestSupport; 6 using Microsoft.VisualStudio.TestTools.UnitTesting;
7 using WixInternal.Core.TestPackage; 7 using WixInternal.MSTestSupport;
8 using WixInternal.Core.MSTestPackage;
8 using WixToolset.DirectX; 9 using WixToolset.DirectX;
9 using Xunit;
10 10
11 [TestClass]
11 public class DirectXExtensionFixture 12 public class DirectXExtensionFixture
12 { 13 {
13 [Fact] 14 [TestMethod]
14 public void CanBuildUsingPixelShaderVersion() 15 public void CanBuildUsingPixelShaderVersion()
15 { 16 {
16 var folder = TestData.Get(@"TestData\UsingPixelShaderVersion"); 17 var folder = TestData.Get(@"TestData\UsingPixelShaderVersion");
diff --git a/src/ext/DirectX/test/WixToolsetTest.DirectX/WixToolsetTest.DirectX.csproj b/src/ext/DirectX/test/WixToolsetTest.DirectX/WixToolsetTest.DirectX.csproj
index 31a35320..c13f3300 100644
--- a/src/ext/DirectX/test/WixToolsetTest.DirectX/WixToolsetTest.DirectX.csproj
+++ b/src/ext/DirectX/test/WixToolsetTest.DirectX/WixToolsetTest.DirectX.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -19,6 +19,7 @@
19 </ItemGroup> 19 </ItemGroup>
20 20
21 <ItemGroup> 21 <ItemGroup>
22 <PackageReference Include="WixInternal.Core.TestPackage" /> 22 <PackageReference Include="WixInternal.MSTestSupport" />
23 <PackageReference Include="WixInternal.Core.MSTestPackage" />
23 </ItemGroup> 24 </ItemGroup>
24</Project> 25</Project>
diff --git a/src/ext/Firewall/firewall.cmd b/src/ext/Firewall/firewall.cmd
deleted file mode 100644
index 92926a8c..00000000
--- a/src/ext/Firewall/firewall.cmd
+++ /dev/null
@@ -1,21 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5:parse_args
6@if /i "%1"=="release" set _C=Release
7@if not "%1"=="" shift & goto parse_args
8
9@echo Firewall.wixext build %_C%
10
11:: Build
12msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror || exit /b
13
14:: Test
15dotnet test -c %_C% --no-build test\WixToolsetTest.Firewall || exit /b
16
17:: Pack
18msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.Firewall.wixext.csproj || exit /b
19
20@popd
21@endlocal
diff --git a/src/ext/Firewall/firewall_t.proj b/src/ext/Firewall/firewall_t.proj
new file mode 100644
index 00000000..67229c39
--- /dev/null
+++ b/src/ext/Firewall/firewall_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.Firewall\WixToolsetTest.Firewall.csproj" />
7 <ProjectReference Include="wixext\WixToolset.Firewall.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)firewall.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.firewall.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.firewall.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.Firewall.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs b/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs
index 65016865..4b9aecd7 100644
--- a/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs
+++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs
@@ -6,14 +6,15 @@ namespace WixToolsetTest.Firewall
6 using System.IO; 6 using System.IO;
7 using System.Linq; 7 using System.Linq;
8 using System.Xml.Linq; 8 using System.Xml.Linq;
9 using WixInternal.Core.TestPackage; 9 using Microsoft.VisualStudio.TestTools.UnitTesting;
10 using WixInternal.TestSupport; 10 using WixInternal.Core.MSTestPackage;
11 using WixInternal.MSTestSupport;
11 using WixToolset.Firewall; 12 using WixToolset.Firewall;
12 using Xunit;
13 13
14 [TestClass]
14 public class FirewallExtensionFixture 15 public class FirewallExtensionFixture
15 { 16 {
16 [Fact] 17 [TestMethod]
17 public void CanBuildUsingFirewall() 18 public void CanBuildUsingFirewall()
18 { 19 {
19 var folder = TestData.Get(@"TestData\UsingFirewall"); 20 var folder = TestData.Get(@"TestData\UsingFirewall");
@@ -52,7 +53,7 @@ namespace WixToolsetTest.Firewall
52 }, results); 53 }, results);
53 } 54 }
54 55
55 [Fact] 56 [TestMethod]
56 public void CanBuildUsingFirewallARM64() 57 public void CanBuildUsingFirewallARM64()
57 { 58 {
58 var folder = TestData.Get(@"TestData\UsingFirewall"); 59 var folder = TestData.Get(@"TestData\UsingFirewall");
@@ -91,7 +92,7 @@ namespace WixToolsetTest.Firewall
91 }, results); 92 }, results);
92 } 93 }
93 94
94 [Fact] 95 [TestMethod]
95 public void CanBuildWithProperties() 96 public void CanBuildWithProperties()
96 { 97 {
97 var folder = TestData.Get(@"TestData\UsingProperties"); 98 var folder = TestData.Get(@"TestData\UsingProperties");
@@ -112,7 +113,7 @@ namespace WixToolsetTest.Firewall
112 }, results); 113 }, results);
113 } 114 }
114 115
115 [Fact] 116 [TestMethod]
116 public void CanBuildWithPropertiesUsingFirewallARM64() 117 public void CanBuildWithPropertiesUsingFirewallARM64()
117 { 118 {
118 var folder = TestData.Get(@"TestData\UsingProperties"); 119 var folder = TestData.Get(@"TestData\UsingProperties");
@@ -133,7 +134,7 @@ namespace WixToolsetTest.Firewall
133 }, results); 134 }, results);
134 } 135 }
135 136
136 [Fact] 137 [TestMethod]
137 public void CanRoundtripFirewallExceptions() 138 public void CanRoundtripFirewallExceptions()
138 { 139 {
139 var folder = TestData.Get(@"TestData", "UsingFirewall"); 140 var folder = TestData.Get(@"TestData", "UsingFirewall");
@@ -181,7 +182,7 @@ namespace WixToolsetTest.Firewall
181 }, actual.Select(a => a.Name).ToArray()); 182 }, actual.Select(a => a.Name).ToArray());
182 } 183 }
183 184
184 [Fact] 185 [TestMethod]
185 public void CanRoundtripFirewallExceptionsWithProperties() 186 public void CanRoundtripFirewallExceptionsWithProperties()
186 { 187 {
187 var folder = TestData.Get(@"TestData", "UsingProperties"); 188 var folder = TestData.Get(@"TestData", "UsingProperties");
@@ -212,7 +213,7 @@ namespace WixToolsetTest.Firewall
212 }, actual.Select(a => a.Name).ToArray()); 213 }, actual.Select(a => a.Name).ToArray());
213 } 214 }
214 215
215 [Fact] 216 [TestMethod]
216 public void RoundtripAttributesAreCorrectForApp() 217 public void RoundtripAttributesAreCorrectForApp()
217 { 218 {
218 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleApp"); 219 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleApp");
@@ -230,7 +231,7 @@ namespace WixToolsetTest.Firewall
230 }, actual.Attributes); 231 }, actual.Attributes);
231 } 232 }
232 233
233 [Fact] 234 [TestMethod]
234 public void RoundtripAttributesAreCorrectForPort() 235 public void RoundtripAttributesAreCorrectForPort()
235 { 236 {
236 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExamplePort"); 237 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExamplePort");
@@ -248,7 +249,7 @@ namespace WixToolsetTest.Firewall
248 }, actual.Attributes); 249 }, actual.Attributes);
249 } 250 }
250 251
251 [Fact] 252 [TestMethod]
252 public void RoundtripAttributesAreCorrectForDNSScope() 253 public void RoundtripAttributesAreCorrectForDNSScope()
253 { 254 {
254 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDNSScope"); 255 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDNSScope");
@@ -264,7 +265,7 @@ namespace WixToolsetTest.Firewall
264 }, actual.Attributes); 265 }, actual.Attributes);
265 } 266 }
266 267
267 [Fact] 268 [TestMethod]
268 public void RoundtripAttributesAreCorrectForDHCPScope() 269 public void RoundtripAttributesAreCorrectForDHCPScope()
269 { 270 {
270 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDHCPScope"); 271 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDHCPScope");
@@ -281,7 +282,7 @@ namespace WixToolsetTest.Firewall
281 }, actual.Attributes); 282 }, actual.Attributes);
282 } 283 }
283 284
284 [Fact] 285 [TestMethod]
285 public void RoundtripAttributesAreCorrectForWINSScope() 286 public void RoundtripAttributesAreCorrectForWINSScope()
286 { 287 {
287 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleWINSScope"); 288 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleWINSScope");
@@ -298,7 +299,7 @@ namespace WixToolsetTest.Firewall
298 }, actual.Attributes); 299 }, actual.Attributes);
299 } 300 }
300 301
301 [Fact] 302 [TestMethod]
302 public void RoundtripAttributesAreCorrectForDefaultGatewayScope() 303 public void RoundtripAttributesAreCorrectForDefaultGatewayScope()
303 { 304 {
304 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDefaultGatewayScope"); 305 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ExampleDefaultGatewayScope");
@@ -315,7 +316,7 @@ namespace WixToolsetTest.Firewall
315 }, actual.Attributes); 316 }, actual.Attributes);
316 } 317 }
317 318
318 [Fact] 319 [TestMethod]
319 public void RoundtripAttributesAreCorrectForINetFwRule3Values() 320 public void RoundtripAttributesAreCorrectForINetFwRule3Values()
320 { 321 {
321 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "INetFwRule3 values"); 322 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "INetFwRule3 values");
@@ -335,7 +336,7 @@ namespace WixToolsetTest.Firewall
335 }, actual.Attributes); 336 }, actual.Attributes);
336 } 337 }
337 338
338 [Fact] 339 [TestMethod]
339 public void RoundtripAttributesAreCorrectForINetFwRule3Properties() 340 public void RoundtripAttributesAreCorrectForINetFwRule3Properties()
340 { 341 {
341 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "INetFwRule3 properties"); 342 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "INetFwRule3 properties");
@@ -355,7 +356,7 @@ namespace WixToolsetTest.Firewall
355 }, actual.Attributes); 356 }, actual.Attributes);
356 } 357 }
357 358
358 [Fact] 359 [TestMethod]
359 public void RoundtripAttributesAreCorrectForGroupingValue() 360 public void RoundtripAttributesAreCorrectForGroupingValue()
360 { 361 {
361 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "GroupingExample1"); 362 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "GroupingExample1");
@@ -370,7 +371,7 @@ namespace WixToolsetTest.Firewall
370 }, actual.Attributes); 371 }, actual.Attributes);
371 } 372 }
372 373
373 [Fact] 374 [TestMethod]
374 public void RoundtripAttributesAreCorrectForGroupingProperty() 375 public void RoundtripAttributesAreCorrectForGroupingProperty()
375 { 376 {
376 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "GroupingExample2"); 377 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "GroupingExample2");
@@ -386,7 +387,7 @@ namespace WixToolsetTest.Firewall
386 }, actual.Attributes); 387 }, actual.Attributes);
387 } 388 }
388 389
389 [Fact] 390 [TestMethod]
390 public void RoundtripAttributesAreCorrectForIcmpValue() 391 public void RoundtripAttributesAreCorrectForIcmpValue()
391 { 392 {
392 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ICMPExample1"); 393 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ICMPExample1");
@@ -401,7 +402,7 @@ namespace WixToolsetTest.Firewall
401 }, actual.Attributes); 402 }, actual.Attributes);
402 } 403 }
403 404
404 [Fact] 405 [TestMethod]
405 public void RoundtripAttributesAreCorrectForIcmpProperty() 406 public void RoundtripAttributesAreCorrectForIcmpProperty()
406 { 407 {
407 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ICMPExample2"); 408 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "ICMPExample2");
@@ -416,7 +417,7 @@ namespace WixToolsetTest.Firewall
416 }, actual.Attributes); 417 }, actual.Attributes);
417 } 418 }
418 419
419 [Fact] 420 [TestMethod]
420 public void RoundtripAttributesAreCorrectForLocalScopeValue() 421 public void RoundtripAttributesAreCorrectForLocalScopeValue()
421 { 422 {
422 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "LocalScopeExample1"); 423 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "LocalScopeExample1");
@@ -431,7 +432,7 @@ namespace WixToolsetTest.Firewall
431 }, actual.Attributes); 432 }, actual.Attributes);
432 } 433 }
433 434
434 [Fact] 435 [TestMethod]
435 public void RoundtripAttributesAreCorrectForLocalScopeProperty() 436 public void RoundtripAttributesAreCorrectForLocalScopeProperty()
436 { 437 {
437 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "LocalScopeExample2"); 438 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "LocalScopeExample2");
@@ -446,7 +447,7 @@ namespace WixToolsetTest.Firewall
446 }, actual.Attributes); 447 }, actual.Attributes);
447 } 448 }
448 449
449 [Fact] 450 [TestMethod]
450 public void RoundtripAttributesAreCorrectForRemotePorts() 451 public void RoundtripAttributesAreCorrectForRemotePorts()
451 { 452 {
452 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "RemotePortExample1"); 453 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "RemotePortExample1");
@@ -462,7 +463,7 @@ namespace WixToolsetTest.Firewall
462 }, actual.Attributes); 463 }, actual.Attributes);
463 } 464 }
464 465
465 [Fact] 466 [TestMethod]
466 public void RoundtripAttributesAreCorrectForRemotePortsProperty() 467 public void RoundtripAttributesAreCorrectForRemotePortsProperty()
467 { 468 {
468 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "RemotePortExample2"); 469 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "RemotePortExample2");
@@ -478,7 +479,7 @@ namespace WixToolsetTest.Firewall
478 }, actual.Attributes); 479 }, actual.Attributes);
479 } 480 }
480 481
481 [Fact] 482 [TestMethod]
482 public void RoundtripAttributesAreCorrectWhenPropertiesAreUsed() 483 public void RoundtripAttributesAreCorrectWhenPropertiesAreUsed()
483 { 484 {
484 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "[NAME]", "UsingProperties"); 485 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "[NAME]", "UsingProperties");
@@ -526,10 +527,10 @@ namespace WixToolsetTest.Firewall
526 }); 527 });
527 528
528 var nested = related.Select(e => e.Attributes().Single(a => a.Name.LocalName == "Name").Value); 529 var nested = related.Select(e => e.Attributes().Single(a => a.Name.LocalName == "Name").Value);
529 Assert.False(nested.Any()); 530 Assert.IsFalse(nested.Any());
530 } 531 }
531 532
532 [Fact] 533 [TestMethod]
533 public void RoundtripAttributesAreCorrectWhenNestedPropertiesAreUsed() 534 public void RoundtripAttributesAreCorrectWhenNestedPropertiesAreUsed()
534 { 535 {
535 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "Single Nested properties", "UsingProperties"); 536 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "Single Nested properties", "UsingProperties");
@@ -559,10 +560,10 @@ namespace WixToolsetTest.Firewall
559 }); 560 });
560 561
561 var nested = related.Select(e => e.Attributes().Single(a => a.Name.LocalName == "Name").Value); 562 var nested = related.Select(e => e.Attributes().Single(a => a.Name.LocalName == "Name").Value);
562 Assert.False(nested.Any()); 563 Assert.IsFalse(nested.Any());
563 } 564 }
564 565
565 [Fact] 566 [TestMethod]
566 public void RoundtripAttributesAreCorrectWhenMultipleNestedPropertiesAreUsed() 567 public void RoundtripAttributesAreCorrectWhenMultipleNestedPropertiesAreUsed()
567 { 568 {
568 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "Multiple Nested properties", "UsingProperties"); 569 var actual = BuildAndDecompileAndBuild("http://wixtoolset.org/schemas/v4/wxs/firewall", "Multiple Nested properties", "UsingProperties");
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/WixToolsetTest.Firewall.csproj b/src/ext/Firewall/test/WixToolsetTest.Firewall/WixToolsetTest.Firewall.csproj
index e46020a6..5de88c8b 100644
--- a/src/ext/Firewall/test/WixToolsetTest.Firewall/WixToolsetTest.Firewall.csproj
+++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/WixToolsetTest.Firewall.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -16,6 +16,7 @@
16 </ItemGroup> 16 </ItemGroup>
17 17
18 <ItemGroup> 18 <ItemGroup>
19 <PackageReference Include="WixInternal.Core.TestPackage" /> 19 <PackageReference Include="WixInternal.MSTestSupport" />
20 <PackageReference Include="WixInternal.Core.MSTestPackage" />
20 </ItemGroup> 21 </ItemGroup>
21</Project> 22</Project>
diff --git a/src/ext/Http/http.cmd b/src/ext/Http/http.cmd
deleted file mode 100644
index afcffb24..00000000
--- a/src/ext/Http/http.cmd
+++ /dev/null
@@ -1,21 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5:parse_args
6@if /i "%1"=="release" set _C=Release
7@if not "%1"=="" shift & goto parse_args
8
9@echo Http.wixext build %_C%
10
11:: Build
12msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror || exit /b
13
14:: Test
15dotnet test -c %_C% --no-build test\WixToolsetTest.Http || exit /b
16
17:: Pack
18msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.Http.wixext.csproj || exit /b
19
20@popd
21@endlocal
diff --git a/src/ext/Http/http_t.proj b/src/ext/Http/http_t.proj
new file mode 100644
index 00000000..8cd9c7d4
--- /dev/null
+++ b/src/ext/Http/http_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.Http\WixToolsetTest.Http.csproj" />
7 <ProjectReference Include="wixext\WixToolset.Http.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)http.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.http.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.http.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.Http.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/Http/test/WixToolsetTest.Http/HttpExtensionFixture.cs b/src/ext/Http/test/WixToolsetTest.Http/HttpExtensionFixture.cs
index ffd698f5..c91ce937 100644
--- a/src/ext/Http/test/WixToolsetTest.Http/HttpExtensionFixture.cs
+++ b/src/ext/Http/test/WixToolsetTest.Http/HttpExtensionFixture.cs
@@ -2,14 +2,15 @@
2 2
3namespace WixToolsetTest.Http 3namespace WixToolsetTest.Http
4{ 4{
5 using WixInternal.TestSupport; 5 using Microsoft.VisualStudio.TestTools.UnitTesting;
6 using WixInternal.Core.TestPackage; 6 using WixInternal.MSTestSupport;
7 using WixInternal.Core.MSTestPackage;
7 using WixToolset.Http; 8 using WixToolset.Http;
8 using Xunit;
9 9
10 [TestClass]
10 public class HttpExtensionFixture 11 public class HttpExtensionFixture
11 { 12 {
12 [Fact] 13 [TestMethod]
13 public void CanBuildUsingSsl() 14 public void CanBuildUsingSsl()
14 { 15 {
15 var folder = TestData.Get("TestData", "Ssl"); 16 var folder = TestData.Get("TestData", "Ssl");
@@ -29,7 +30,7 @@ namespace WixToolsetTest.Http
29 }, results); 30 }, results);
30 } 31 }
31 32
32 [Fact] 33 [TestMethod]
33 public void CanBuildUsingUrlReservation() 34 public void CanBuildUsingUrlReservation()
34 { 35 {
35 var folder = TestData.Get(@"TestData\UsingUrlReservation"); 36 var folder = TestData.Get(@"TestData\UsingUrlReservation");
diff --git a/src/ext/Http/test/WixToolsetTest.Http/WixToolsetTest.Http.csproj b/src/ext/Http/test/WixToolsetTest.Http/WixToolsetTest.Http.csproj
index b23ef481..d5e6c929 100644
--- a/src/ext/Http/test/WixToolsetTest.Http/WixToolsetTest.Http.csproj
+++ b/src/ext/Http/test/WixToolsetTest.Http/WixToolsetTest.Http.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -16,6 +16,7 @@
16 </ItemGroup> 16 </ItemGroup>
17 17
18 <ItemGroup> 18 <ItemGroup>
19 <PackageReference Include="WixInternal.Core.TestPackage" /> 19 <PackageReference Include="WixInternal.MSTestSupport" />
20 <PackageReference Include="WixInternal.Core.MSTestPackage" />
20 </ItemGroup> 21 </ItemGroup>
21</Project> 22</Project>
diff --git a/src/ext/Iis/iis.cmd b/src/ext/Iis/iis.cmd
deleted file mode 100644
index 0ae87a77..00000000
--- a/src/ext/Iis/iis.cmd
+++ /dev/null
@@ -1,21 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5:parse_args
6@if /i "%1"=="release" set _C=Release
7@if not "%1"=="" shift & goto parse_args
8
9@echo Iis.wixext build %_C%
10
11:: Build
12msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror || exit /b
13
14:: Test
15dotnet test test\WixToolsetTest.Iis -c %_C% --no-build --nologo || exit /b
16
17:: Pack
18dotnet pack wixext\WixToolset.Iis.wixext.csproj -c %_C% --no-build --nologo || exit /b
19
20@popd
21@endlocal
diff --git a/src/ext/Iis/iis_t.proj b/src/ext/Iis/iis_t.proj
new file mode 100644
index 00000000..84473475
--- /dev/null
+++ b/src/ext/Iis/iis_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.Iis\WixToolsetTest.Iis.csproj" />
7 <ProjectReference Include="wixext\WixToolset.Iis.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)iis.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.iis.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.iis.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.Iis.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/Iis/test/WixToolsetTest.Iis/IisExtensionFixture.cs b/src/ext/Iis/test/WixToolsetTest.Iis/IisExtensionFixture.cs
index ab3f35d9..01a89dc0 100644
--- a/src/ext/Iis/test/WixToolsetTest.Iis/IisExtensionFixture.cs
+++ b/src/ext/Iis/test/WixToolsetTest.Iis/IisExtensionFixture.cs
@@ -3,14 +3,15 @@
3namespace WixToolsetTest.Iis 3namespace WixToolsetTest.Iis
4{ 4{
5 using System.Linq; 5 using System.Linq;
6 using WixInternal.TestSupport; 6 using Microsoft.VisualStudio.TestTools.UnitTesting;
7 using WixInternal.Core.TestPackage; 7 using WixInternal.MSTestSupport;
8 using WixInternal.Core.MSTestPackage;
8 using WixToolset.Iis; 9 using WixToolset.Iis;
9 using Xunit;
10 10
11 [TestClass]
11 public class IisExtensionFixture 12 public class IisExtensionFixture
12 { 13 {
13 [Fact] 14 [TestMethod]
14 public void CanBuildUsingIIs() 15 public void CanBuildUsingIIs()
15 { 16 {
16 var folder = TestData.Get(@"TestData\UsingIis"); 17 var folder = TestData.Get(@"TestData\UsingIis");
diff --git a/src/ext/Iis/test/WixToolsetTest.Iis/WixToolsetTest.Iis.csproj b/src/ext/Iis/test/WixToolsetTest.Iis/WixToolsetTest.Iis.csproj
index a39e5b0b..a0a6e043 100644
--- a/src/ext/Iis/test/WixToolsetTest.Iis/WixToolsetTest.Iis.csproj
+++ b/src/ext/Iis/test/WixToolsetTest.Iis/WixToolsetTest.Iis.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -19,6 +19,7 @@
19 </ItemGroup> 19 </ItemGroup>
20 20
21 <ItemGroup> 21 <ItemGroup>
22 <PackageReference Include="WixInternal.Core.TestPackage" /> 22 <PackageReference Include="WixInternal.MSTestSupport" />
23 <PackageReference Include="WixInternal.Core.MSTestPackage" />
23 </ItemGroup> 24 </ItemGroup>
24</Project> 25</Project>
diff --git a/src/ext/Msmq/msmq.cmd b/src/ext/Msmq/msmq.cmd
deleted file mode 100644
index 3ebceab4..00000000
--- a/src/ext/Msmq/msmq.cmd
+++ /dev/null
@@ -1,21 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5:parse_args
6@if /i "%1"=="release" set _C=Release
7@if not "%1"=="" shift & goto parse_args
8
9@echo Msmq.wixext build %_C%
10
11:: Build
12msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror || exit /b
13
14:: Test
15dotnet test test\WixToolsetTest.Msmq -c %_C% --no-build --nologo || exit /b
16
17:: Pack
18dotnet pack wixext\WixToolset.Msmq.wixext.csproj -c %_C% --no-build --nologo || exit /b
19
20@popd
21@endlocal
diff --git a/src/ext/Msmq/msmq_t.proj b/src/ext/Msmq/msmq_t.proj
new file mode 100644
index 00000000..73424370
--- /dev/null
+++ b/src/ext/Msmq/msmq_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.Msmq\WixToolsetTest.Msmq.csproj" />
7 <ProjectReference Include="wixext\WixToolset.Msmq.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)Msmq.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.Msmq.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.Msmq.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.Msmq.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/Msmq/test/WixToolsetTest.Msmq/MsmqExtensionFixture.cs b/src/ext/Msmq/test/WixToolsetTest.Msmq/MsmqExtensionFixture.cs
index 970bc2e9..60335b8a 100644
--- a/src/ext/Msmq/test/WixToolsetTest.Msmq/MsmqExtensionFixture.cs
+++ b/src/ext/Msmq/test/WixToolsetTest.Msmq/MsmqExtensionFixture.cs
@@ -6,14 +6,15 @@ namespace WixToolsetTest.Msmq
6 using System.IO; 6 using System.IO;
7 using System.Linq; 7 using System.Linq;
8 using System.Xml.Linq; 8 using System.Xml.Linq;
9 using WixInternal.TestSupport; 9 using Microsoft.VisualStudio.TestTools.UnitTesting;
10 using WixInternal.Core.TestPackage; 10 using WixInternal.MSTestSupport;
11 using WixInternal.Core.MSTestPackage;
11 using WixToolset.Msmq; 12 using WixToolset.Msmq;
12 using Xunit;
13 13
14 [TestClass]
14 public class MsmqExtensionFixture 15 public class MsmqExtensionFixture
15 { 16 {
16 [Fact] 17 [TestMethod]
17 public void CanBuildUsingMessageQueue() 18 public void CanBuildUsingMessageQueue()
18 { 19 {
19 var folder = TestData.Get(@"TestData\UsingMessageQueue"); 20 var folder = TestData.Get(@"TestData\UsingMessageQueue");
@@ -36,7 +37,8 @@ namespace WixToolsetTest.Msmq
36 }, results); 37 }, results);
37 } 38 }
38 39
39 [Fact(Skip = "Util:Wix4Group and Util:Wix6Group decompilation issues prevent this usage currently")] 40 [TestMethod]
41 [Ignore("Util:Wix4Group and Util:Wix6Group decompilation issues prevent this usage currently")]
40 public void CanRoundtripMessageQueue() 42 public void CanRoundtripMessageQueue()
41 { 43 {
42 var folder = TestData.Get(@"TestData\UsingMessageQueue"); 44 var folder = TestData.Get(@"TestData\UsingMessageQueue");
diff --git a/src/ext/Msmq/test/WixToolsetTest.Msmq/WixToolsetTest.Msmq.csproj b/src/ext/Msmq/test/WixToolsetTest.Msmq/WixToolsetTest.Msmq.csproj
index e7b6f21e..a8991c2e 100644
--- a/src/ext/Msmq/test/WixToolsetTest.Msmq/WixToolsetTest.Msmq.csproj
+++ b/src/ext/Msmq/test/WixToolsetTest.Msmq/WixToolsetTest.Msmq.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -19,6 +19,7 @@
19 </ItemGroup> 19 </ItemGroup>
20 20
21 <ItemGroup> 21 <ItemGroup>
22 <PackageReference Include="WixInternal.Core.TestPackage" /> 22 <PackageReference Include="WixInternal.MSTestSupport" />
23 <PackageReference Include="WixInternal.Core.MSTestPackage" />
23 </ItemGroup> 24 </ItemGroup>
24</Project> 25</Project>
diff --git a/src/ext/NetFx/netfx.cmd b/src/ext/NetFx/netfx.cmd
deleted file mode 100644
index d81959cc..00000000
--- a/src/ext/NetFx/netfx.cmd
+++ /dev/null
@@ -1,48 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5@set _L=%~dp0..\..\..\build\logs
6
7:parse_args
8@if /i "%1"=="release" set _C=Release
9@if /i "%1"=="inc" set _INC=1
10@if /i "%1"=="clean" set _CLEAN=1
11@if not "%1"=="" shift & goto parse_args
12
13@set _B=%~dp0..\..\..\build\NetFx.wixext\%_C%
14
15:: Clean
16
17@if "%_INC%"=="" call :clean
18@if NOT "%_CLEAN%"=="" goto :end
19
20@echo NetFx.wixext build %_C%
21
22:: Restore
23nuget restore netcoresearch\packages.config || exit /b
24
25:: Build
26msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror -bl:%_L%\ext_netfx_build.binlog || exit /b
27
28:: Test
29dotnet test ^
30 %_B%\net6.0\WixToolsetTest.NetFx.dll ^
31 --nologo -l "trx;LogFileName=%_L%\TestResults\netfx.wixext.trx" || exit /b
32
33:: Pack
34msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.Netfx.wixext.csproj || exit /b
35
36@goto :end
37
38:clean
39@rd /s/q "..\..\build\NetFx.wixext" 2> nul
40@del "..\..\build\artifacts\WixToolset.NetFx.wixext.*.nupkg" 2> nul
41@del "%_L%\ext_netfx_build.binlog" 2> nul
42@del "%_L%\TestResults\netfx.wixext.trx" 2> nul
43@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.netfx.wixext" 2> nul
44@exit /b
45
46:end
47@popd
48@endlocal
diff --git a/src/ext/NetFx/netfx_t.proj b/src/ext/NetFx/netfx_t.proj
new file mode 100644
index 00000000..3301dc8a
--- /dev/null
+++ b/src/ext/NetFx/netfx_t.proj
@@ -0,0 +1,26 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="wixlib\netfx.wixproj" />
7 <ProjectReference Include="test\WixToolsetTest.Netfx\WixToolsetTest.Netfx.csproj" />
8 <ProjectReference Include="wixext\WixToolset.Netfx.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
9 </ItemGroup>
10
11 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
12 <!--
13 This should work but at first glance, the .vcxproj doesn't get detected as a "package.config-style project."
14 Worth finding out if we could trigger it artificially. It would let us stop needing nuget.exe.
15
16 <ProjectReference Include="netcoresearch\netcoresearch.vcxproj" Targets="Restore" Properties="RestorePackagesConfig=true" />
17 -->
18 <Exec Command="nuget restore netcoresearch\packages.config" />
19
20 <RemoveDir Directories="$(RootBuildFolder)NetFx.wixext" />
21 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.netfx.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
22 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.netfx.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
23
24 <Delete Files="$(ArtifactsFolder)WixToolset.NetFx.wixext.*.nupkg" />
25 </Target>
26</Project>
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs b/src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs
index a78a5617..37f715bf 100644
--- a/src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs
+++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs
@@ -4,14 +4,15 @@ namespace WixToolsetTest.Netfx
4{ 4{
5 using System.IO; 5 using System.IO;
6 using System.Linq; 6 using System.Linq;
7 using WixInternal.TestSupport; 7 using Microsoft.VisualStudio.TestTools.UnitTesting;
8 using WixInternal.Core.TestPackage; 8 using WixInternal.MSTestSupport;
9 using WixInternal.Core.MSTestPackage;
9 using WixToolset.Netfx; 10 using WixToolset.Netfx;
10 using Xunit;
11 11
12 [TestClass]
12 public class NetfxExtensionFixture 13 public class NetfxExtensionFixture
13 { 14 {
14 [Fact] 15 [TestMethod]
15 public void CanBuildUsingLatestDotNetCorePackages() 16 public void CanBuildUsingLatestDotNetCorePackages()
16 { 17 {
17 using (var fs = new DisposableFileSystem()) 18 using (var fs = new DisposableFileSystem())
@@ -21,30 +22,24 @@ namespace WixToolsetTest.Netfx
21 var bundleSourceFolder = TestData.Get(@"TestData\UsingDotNetCorePackages"); 22 var bundleSourceFolder = TestData.Get(@"TestData\UsingDotNetCorePackages");
22 var intermediateFolder = Path.Combine(baseFolder, "obj"); 23 var intermediateFolder = Path.Combine(baseFolder, "obj");
23 24
24 var extensionResult = WixRunner.Execute(new[]
25 {
26 "extension", "add",
27 "WixToolset.BootstrapperApplications.wixext"
28 });
29
30 var compileResult = WixRunner.Execute(new[] 25 var compileResult = WixRunner.Execute(new[]
31 { 26 {
32 "build", 27 "build",
33 Path.Combine(bundleSourceFolder, "BundleLatest.wxs"), 28 Path.Combine(bundleSourceFolder, "BundleLatest.wxs"),
34 Path.Combine(bundleSourceFolder, "NetCore3.1.12_x86.wxs"), 29 Path.Combine(bundleSourceFolder, "NetCore3.1.12_x86.wxs"),
35 Path.Combine(bundleSourceFolder, "NetCore3.1.12_x64.wxs"), 30 Path.Combine(bundleSourceFolder, "NetCore3.1.12_x64.wxs"),
36 "-ext", "WixToolset.BootstrapperApplications.wixext", 31 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll").Replace("NetFx.wixext", "Bal.wixext"),
37 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"), 32 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"),
38 "-intermediateFolder", intermediateFolder, 33 "-intermediateFolder", intermediateFolder,
39 "-o", bundleFile, 34 "-o", bundleFile,
40 }); 35 });
41 compileResult.AssertSuccess(); 36 compileResult.AssertSuccess();
42 37
43 Assert.True(File.Exists(bundleFile)); 38 Assert.IsTrue(File.Exists(bundleFile));
44 } 39 }
45 } 40 }
46 41
47 [Fact] 42 [TestMethod]
48 public void CanBuildUsingLatestDotNetCorePackages_X64() 43 public void CanBuildUsingLatestDotNetCorePackages_X64()
49 { 44 {
50 using (var fs = new DisposableFileSystem()) 45 using (var fs = new DisposableFileSystem())
@@ -54,29 +49,23 @@ namespace WixToolsetTest.Netfx
54 var bundleSourceFolder = TestData.Get(@"TestData\UsingDotNetCorePackages"); 49 var bundleSourceFolder = TestData.Get(@"TestData\UsingDotNetCorePackages");
55 var intermediateFolder = Path.Combine(baseFolder, "obj"); 50 var intermediateFolder = Path.Combine(baseFolder, "obj");
56 51
57 var extensionResult = WixRunner.Execute(new[]
58 {
59 "extension", "add",
60 "WixToolset.BootstrapperApplications.wixext"
61 });
62
63 var compileResult = WixRunner.Execute(new[] 52 var compileResult = WixRunner.Execute(new[]
64 { 53 {
65 "build", 54 "build",
66 Path.Combine(bundleSourceFolder, "BundleLatest_x64.wxs"), 55 Path.Combine(bundleSourceFolder, "BundleLatest_x64.wxs"),
67 Path.Combine(bundleSourceFolder, "NetCore3.1.12_x64.wxs"), 56 Path.Combine(bundleSourceFolder, "NetCore3.1.12_x64.wxs"),
68 "-ext", "WixToolset.BootstrapperApplications.wixext", 57 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll").Replace("NetFx.wixext", "Bal.wixext"),
69 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"), 58 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"),
70 "-intermediateFolder", intermediateFolder, 59 "-intermediateFolder", intermediateFolder,
71 "-o", bundleFile, 60 "-o", bundleFile,
72 }); 61 });
73 compileResult.AssertSuccess(); 62 compileResult.AssertSuccess();
74 63
75 Assert.True(File.Exists(bundleFile)); 64 Assert.IsTrue(File.Exists(bundleFile));
76 } 65 }
77 } 66 }
78 67
79 [Fact] 68 [TestMethod]
80 public void CanBuildUsingNetFx481Packages() 69 public void CanBuildUsingNetFx481Packages()
81 { 70 {
82 using (var fs = new DisposableFileSystem()) 71 using (var fs = new DisposableFileSystem())
@@ -86,17 +75,11 @@ namespace WixToolsetTest.Netfx
86 var bundleSourceFolder = TestData.Get(@"TestData\UsingNetFxPackages"); 75 var bundleSourceFolder = TestData.Get(@"TestData\UsingNetFxPackages");
87 var intermediateFolder = Path.Combine(baseFolder, "obj"); 76 var intermediateFolder = Path.Combine(baseFolder, "obj");
88 77
89 var extensionResult = WixRunner.Execute(new[]
90 {
91 "extension", "add",
92 "WixToolset.BootstrapperApplications.wixext"
93 });
94
95 var compileResult = WixRunner.Execute(new[] 78 var compileResult = WixRunner.Execute(new[]
96 { 79 {
97 "build", 80 "build",
98 Path.Combine(bundleSourceFolder, "BundleLatest.wxs"), 81 Path.Combine(bundleSourceFolder, "BundleLatest.wxs"),
99 "-ext", "WixToolset.BootstrapperApplications.wixext", 82 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll").Replace("NetFx.wixext", "Bal.wixext"),
100 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"), 83 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"),
101 "-intermediateFolder", intermediateFolder, 84 "-intermediateFolder", intermediateFolder,
102 "-o", bundleFile, 85 "-o", bundleFile,
@@ -104,11 +87,11 @@ namespace WixToolsetTest.Netfx
104 }); 87 });
105 compileResult.AssertSuccess(); 88 compileResult.AssertSuccess();
106 89
107 Assert.True(File.Exists(bundleFile)); 90 Assert.IsTrue(File.Exists(bundleFile));
108 } 91 }
109 } 92 }
110 93
111 [Fact] 94 [TestMethod]
112 public void CanBuildUsingNetFxSearches() 95 public void CanBuildUsingNetFxSearches()
113 { 96 {
114 using (var fs = new DisposableFileSystem()) 97 using (var fs = new DisposableFileSystem())
@@ -118,20 +101,12 @@ namespace WixToolsetTest.Netfx
118 var bundleSourceFolder = TestData.Get(@"TestData\UsingNetFxSearches"); 101 var bundleSourceFolder = TestData.Get(@"TestData\UsingNetFxSearches");
119 var intermediateFolder = Path.Combine(baseFolder, "obj"); 102 var intermediateFolder = Path.Combine(baseFolder, "obj");
120 103
121 var extensionResult = WixRunner.Execute(warningsAsErrors: true, new[]
122 {
123 "extension", "add",
124 "WixToolset.BootstrapperApplications.wixext",
125 "extension", "add",
126 "WixToolset.Util.wixext",
127 });
128
129 var compileResult = WixRunner.Execute(new[] 104 var compileResult = WixRunner.Execute(new[]
130 { 105 {
131 "build", 106 "build",
132 Path.Combine(bundleSourceFolder, "BundleLatest.wxs"), 107 Path.Combine(bundleSourceFolder, "BundleLatest.wxs"),
133 "-ext", "WixToolset.BootstrapperApplications.wixext", 108 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll").Replace("NetFx.wixext", "Bal.wixext"),
134 "-ext", "WixToolset.Util.wixext", 109 "-ext", TestData.Get(@"WixToolset.Util.wixext.dll").Replace("NetFx.wixext", "Util.wixext"),
135 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"), 110 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"),
136 "-intermediateFolder", intermediateFolder, 111 "-intermediateFolder", intermediateFolder,
137 "-o", bundleFile, 112 "-o", bundleFile,
@@ -139,11 +114,11 @@ namespace WixToolsetTest.Netfx
139 }); 114 });
140 compileResult.AssertSuccess(); 115 compileResult.AssertSuccess();
141 116
142 Assert.True(File.Exists(bundleFile)); 117 Assert.IsTrue(File.Exists(bundleFile));
143 } 118 }
144 } 119 }
145 120
146 [Fact] 121 [TestMethod]
147 public void CanBuildUsingNativeImage() 122 public void CanBuildUsingNativeImage()
148 { 123 {
149 var folder = TestData.Get(@"TestData\UsingNativeImage"); 124 var folder = TestData.Get(@"TestData\UsingNativeImage");
@@ -162,7 +137,7 @@ namespace WixToolsetTest.Netfx
162 }, results.OrderBy(s => s).ToArray()); 137 }, results.OrderBy(s => s).ToArray());
163 } 138 }
164 139
165 [Fact] 140 [TestMethod]
166 public void CanBuildUsingNativeImageX64() 141 public void CanBuildUsingNativeImageX64()
167 { 142 {
168 var folder = TestData.Get(@"TestData\UsingNativeImage"); 143 var folder = TestData.Get(@"TestData\UsingNativeImage");
@@ -181,7 +156,7 @@ namespace WixToolsetTest.Netfx
181 }, results.OrderBy(s => s).ToArray()); 156 }, results.OrderBy(s => s).ToArray());
182 } 157 }
183 158
184 [Fact] 159 [TestMethod]
185 public void CanBuildUsingNativeImageARM64() 160 public void CanBuildUsingNativeImageARM64()
186 { 161 {
187 var folder = TestData.Get(@"TestData\UsingNativeImage"); 162 var folder = TestData.Get(@"TestData\UsingNativeImage");
@@ -200,7 +175,7 @@ namespace WixToolsetTest.Netfx
200 }, results.OrderBy(s => s).ToArray()); 175 }, results.OrderBy(s => s).ToArray());
201 } 176 }
202 177
203 [Fact] 178 [TestMethod]
204 public void CanBuildUsingDotNetCompatibilityCheck() 179 public void CanBuildUsingDotNetCompatibilityCheck()
205 { 180 {
206 var folder = TestData.Get(@"TestData\UsingDotNetCompatibilityCheck"); 181 var folder = TestData.Get(@"TestData\UsingDotNetCompatibilityCheck");
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/WixToolsetTest.Netfx.csproj b/src/ext/NetFx/test/WixToolsetTest.Netfx/WixToolsetTest.Netfx.csproj
index 4e509cce..bdca49e6 100644
--- a/src/ext/NetFx/test/WixToolsetTest.Netfx/WixToolsetTest.Netfx.csproj
+++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/WixToolsetTest.Netfx.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -16,6 +16,7 @@
16 </ItemGroup> 16 </ItemGroup>
17 17
18 <ItemGroup> 18 <ItemGroup>
19 <PackageReference Include="WixInternal.Core.TestPackage" /> 19 <PackageReference Include="WixInternal.MSTestSupport" />
20 <PackageReference Include="WixInternal.Core.MSTestPackage" />
20 </ItemGroup> 21 </ItemGroup>
21</Project> 22</Project>
diff --git a/src/ext/PowerShell/powershell_t.proj b/src/ext/PowerShell/powershell_t.proj
new file mode 100644
index 00000000..da54d629
--- /dev/null
+++ b/src/ext/PowerShell/powershell_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.PowerShell\WixToolsetTest.Powershell.csproj" />
7 <ProjectReference Include="wixext\WixToolset.PowerShell.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)PowerShell.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.PowerShell.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.PowerShell.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.PowerShell.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/PowerShell/ps.cmd b/src/ext/PowerShell/ps.cmd
deleted file mode 100644
index 4a8aa61e..00000000
--- a/src/ext/PowerShell/ps.cmd
+++ /dev/null
@@ -1,21 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5:parse_args
6@if /i "%1"=="release" set _C=Release
7@if not "%1"=="" shift & goto parse_args
8
9@echo PowerShell.wixext build %_C%
10
11:: Build
12msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror || exit /b
13
14:: Test
15dotnet test -c %_C% --no-build test\WixToolsetTest.PowerShell || exit /b
16
17:: Pack
18msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.PowerShell.wixext.csproj || exit /b
19
20@popd
21@endlocal
diff --git a/src/ext/PowerShell/test/WixToolsetTest.PowerShell/PowerShellExtensionFixture.cs b/src/ext/PowerShell/test/WixToolsetTest.PowerShell/PowerShellExtensionFixture.cs
index eafda99f..a1dc3282 100644
--- a/src/ext/PowerShell/test/WixToolsetTest.PowerShell/PowerShellExtensionFixture.cs
+++ b/src/ext/PowerShell/test/WixToolsetTest.PowerShell/PowerShellExtensionFixture.cs
@@ -2,14 +2,15 @@
2 2
3namespace WixToolsetTest.PowerShell 3namespace WixToolsetTest.PowerShell
4{ 4{
5 using WixInternal.TestSupport; 5 using Microsoft.VisualStudio.TestTools.UnitTesting;
6 using WixInternal.Core.TestPackage; 6 using WixInternal.MSTestSupport;
7 using WixInternal.Core.MSTestPackage;
7 using WixToolset.PowerShell; 8 using WixToolset.PowerShell;
8 using Xunit;
9 9
10 [TestClass]
10 public class PowerShellExtensionFixture 11 public class PowerShellExtensionFixture
11 { 12 {
12 [Fact] 13 [TestMethod]
13 public void CantBuildUsingTypesFileWithoutSnapIn() 14 public void CantBuildUsingTypesFileWithoutSnapIn()
14 { 15 {
15 var folder = TestData.Get(@"TestData\TypesFile"); 16 var folder = TestData.Get(@"TestData\TypesFile");
@@ -19,8 +20,8 @@ namespace WixToolsetTest.PowerShell
19 var results = build.BuildAndQuery(args => { 20 var results = build.BuildAndQuery(args => {
20 wixRunnerResult = WixRunner.Execute(args); 21 wixRunnerResult = WixRunner.Execute(args);
21 }); 22 });
22 Assert.NotNull(wixRunnerResult); 23 Assert.IsNotNull(wixRunnerResult);
23 Assert.Equal((int)PSErrors.Ids.NeitherIdSpecified, wixRunnerResult.ExitCode); 24 Assert.AreEqual((int)PSErrors.Ids.NeitherIdSpecified, wixRunnerResult.ExitCode);
24 } 25 }
25 } 26 }
26} 27}
diff --git a/src/ext/PowerShell/test/WixToolsetTest.PowerShell/WixToolsetTest.Powershell.csproj b/src/ext/PowerShell/test/WixToolsetTest.PowerShell/WixToolsetTest.Powershell.csproj
index 347ca1ed..cff13cb7 100644
--- a/src/ext/PowerShell/test/WixToolsetTest.PowerShell/WixToolsetTest.Powershell.csproj
+++ b/src/ext/PowerShell/test/WixToolsetTest.PowerShell/WixToolsetTest.Powershell.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -16,6 +16,7 @@
16 </ItemGroup> 16 </ItemGroup>
17 17
18 <ItemGroup> 18 <ItemGroup>
19 <PackageReference Include="WixInternal.Core.TestPackage" /> 19 <PackageReference Include="WixInternal.MSTestSupport" />
20 <PackageReference Include="WixInternal.Core.MSTestPackage" />
20 </ItemGroup> 21 </ItemGroup>
21</Project> 22</Project>
diff --git a/src/ext/Sql/sql.cmd b/src/ext/Sql/sql.cmd
deleted file mode 100644
index 41af0223..00000000
--- a/src/ext/Sql/sql.cmd
+++ /dev/null
@@ -1,21 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5:parse_args
6@if /i "%1"=="release" set _C=Release
7@if not "%1"=="" shift & goto parse_args
8
9@echo Sql.wixext build %_C%
10
11:: Build
12msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror || exit /b
13
14:: Test
15dotnet test -c %_C% --no-build test\WixToolsetTest.Sql || exit /b
16
17:: Pack
18msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.Sql.wixext.csproj || exit /b
19
20@popd
21@endlocal
diff --git a/src/ext/Sql/sql_t.proj b/src/ext/Sql/sql_t.proj
new file mode 100644
index 00000000..97b2c8fd
--- /dev/null
+++ b/src/ext/Sql/sql_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.Sql\WixToolsetTest.Sql.csproj" />
7 <ProjectReference Include="wixext\WixToolset.Sql.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)Sql.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.Sql.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.Sql.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.Sql.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/Sql/test/WixToolsetTest.Sql/SqlExtensionFixture.cs b/src/ext/Sql/test/WixToolsetTest.Sql/SqlExtensionFixture.cs
index 5576576d..14ca14c3 100644
--- a/src/ext/Sql/test/WixToolsetTest.Sql/SqlExtensionFixture.cs
+++ b/src/ext/Sql/test/WixToolsetTest.Sql/SqlExtensionFixture.cs
@@ -3,14 +3,15 @@
3namespace WixToolsetTest.Sql 3namespace WixToolsetTest.Sql
4{ 4{
5 using System.Linq; 5 using System.Linq;
6 using WixInternal.TestSupport; 6 using Microsoft.VisualStudio.TestTools.UnitTesting;
7 using WixInternal.Core.TestPackage; 7 using WixInternal.MSTestSupport;
8 using WixInternal.Core.MSTestPackage;
8 using WixToolset.Sql; 9 using WixToolset.Sql;
9 using Xunit;
10 10
11 [TestClass]
11 public class SqlExtensionFixture 12 public class SqlExtensionFixture
12 { 13 {
13 [Fact] 14 [TestMethod]
14 public void CanBuildUsingSqlStuff() 15 public void CanBuildUsingSqlStuff()
15 { 16 {
16 var folder = TestData.Get(@"TestData\UsingSql"); 17 var folder = TestData.Get(@"TestData\UsingSql");
diff --git a/src/ext/Sql/test/WixToolsetTest.Sql/WixToolsetTest.Sql.csproj b/src/ext/Sql/test/WixToolsetTest.Sql/WixToolsetTest.Sql.csproj
index 6c848683..62345258 100644
--- a/src/ext/Sql/test/WixToolsetTest.Sql/WixToolsetTest.Sql.csproj
+++ b/src/ext/Sql/test/WixToolsetTest.Sql/WixToolsetTest.Sql.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -16,6 +16,7 @@
16 </ItemGroup> 16 </ItemGroup>
17 17
18 <ItemGroup> 18 <ItemGroup>
19 <PackageReference Include="WixInternal.Core.TestPackage" /> 19 <PackageReference Include="WixInternal.MSTestSupport" />
20 <PackageReference Include="WixInternal.Core.MSTestPackage" />
20 </ItemGroup> 21 </ItemGroup>
21</Project> 22</Project>
diff --git a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
index bb20f087..e06feac7 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
+++ b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
@@ -4,15 +4,16 @@ namespace WixToolsetTest.UI
4{ 4{
5 using System.IO; 5 using System.IO;
6 using System.Linq; 6 using System.Linq;
7 using WixInternal.Core.TestPackage; 7 using Microsoft.VisualStudio.TestTools.UnitTesting;
8 using WixInternal.TestSupport; 8 using WixInternal.Core.MSTestPackage;
9 using WixInternal.MSTestSupport;
9 using WixToolset.Data.WindowsInstaller; 10 using WixToolset.Data.WindowsInstaller;
10 using WixToolset.UI; 11 using WixToolset.UI;
11 using Xunit;
12 12
13 [TestClass]
13 public class UIExtensionFixture 14 public class UIExtensionFixture
14 { 15 {
15 [Fact] 16 [TestMethod]
16 public void CanBuildUsingWixUIAdvanced() 17 public void CanBuildUsingWixUIAdvanced()
17 { 18 {
18 var folder = TestData.Get(@"TestData", "WixUI_Advanced"); 19 var folder = TestData.Get(@"TestData", "WixUI_Advanced");
@@ -20,7 +21,7 @@ namespace WixToolsetTest.UI
20 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 21 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
21 22
22 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 23 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
23 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t")); 24 WixAssert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
24 WixAssert.CompareLineByLine(new[] 25 WixAssert.CompareLineByLine(new[]
25 { 26 {
26 "Binary:WixUI_Bmp_Banner\t[Binary data]", 27 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -37,7 +38,7 @@ namespace WixToolsetTest.UI
37 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t", 38 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
38 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t", 39 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
39 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 40 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
40 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray()); 41 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
41 WixAssert.CompareLineByLine(new[] 42 WixAssert.CompareLineByLine(new[]
42 { 43 {
43 "InstallUISequence:AdvancedWelcomeEulaDlg\tNOT Installed\t1297", 44 "InstallUISequence:AdvancedWelcomeEulaDlg\tNOT Installed\t1297",
@@ -45,7 +46,7 @@ namespace WixToolsetTest.UI
45 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 46 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
46 } 47 }
47 48
48 [Fact] 49 [TestMethod]
49 public void CanBuildUsingWixUIAdvancedX64() 50 public void CanBuildUsingWixUIAdvancedX64()
50 { 51 {
51 var folder = TestData.Get(@"TestData", "WixUI_Advanced"); 52 var folder = TestData.Get(@"TestData", "WixUI_Advanced");
@@ -53,7 +54,7 @@ namespace WixToolsetTest.UI
53 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 54 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
54 55
55 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 56 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
56 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t")); 57 WixAssert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
57 WixAssert.CompareLineByLine(new[] 58 WixAssert.CompareLineByLine(new[]
58 { 59 {
59 "Binary:WixUI_Bmp_Banner\t[Binary data]", 60 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -70,10 +71,10 @@ namespace WixToolsetTest.UI
70 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t", 71 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
71 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t", 72 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
72 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 73 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
73 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray()); 74 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
74 } 75 }
75 76
76 [Fact] 77 [TestMethod]
77 public void CanBuildUsingWixUIAdvancedARM64() 78 public void CanBuildUsingWixUIAdvancedARM64()
78 { 79 {
79 var folder = TestData.Get(@"TestData", "WixUI_Advanced"); 80 var folder = TestData.Get(@"TestData", "WixUI_Advanced");
@@ -81,7 +82,7 @@ namespace WixToolsetTest.UI
81 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 82 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
82 83
83 var results = build.BuildAndQuery(BuildARM64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 84 var results = build.BuildAndQuery(BuildARM64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
84 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t")); 85 WixAssert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
85 WixAssert.CompareLineByLine(new[] 86 WixAssert.CompareLineByLine(new[]
86 { 87 {
87 "Binary:WixUI_Bmp_Banner\t[Binary data]", 88 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -98,10 +99,10 @@ namespace WixToolsetTest.UI
98 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t", 99 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
99 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t", 100 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
100 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 101 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
101 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray()); 102 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
102 } 103 }
103 104
104 [Fact] 105 [TestMethod]
105 public void CanBuildUsingWixUIFeatureTree() 106 public void CanBuildUsingWixUIFeatureTree()
106 { 107 {
107 var folder = TestData.Get(@"TestData", "WixUI_FeatureTree"); 108 var folder = TestData.Get(@"TestData", "WixUI_FeatureTree");
@@ -109,9 +110,9 @@ namespace WixToolsetTest.UI
109 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 110 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
110 111
111 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 112 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
112 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t")); 113 WixAssert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
113 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t")); 114 WixAssert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
114 Assert.Empty(results.Where(result => result.StartsWith("Dialog:SetupTypeDlg\t"))); 115 WixAssert.Empty(results.Where(result => result.StartsWith("Dialog:SetupTypeDlg\t")));
115 WixAssert.CompareLineByLine(new[] 116 WixAssert.CompareLineByLine(new[]
116 { 117 {
117 "Binary:WixUI_Bmp_Banner\t[Binary data]", 118 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -125,14 +126,14 @@ namespace WixToolsetTest.UI
125 { 126 {
126 "CustomAction:SetWIXUI_EXITDIALOGOPTIONALTEXT\t51\tWIXUI_EXITDIALOGOPTIONALTEXT\tThank you for installing [ProductName].\t", 127 "CustomAction:SetWIXUI_EXITDIALOGOPTIONALTEXT\t51\tWIXUI_EXITDIALOGOPTIONALTEXT\tThank you for installing [ProductName].\t",
127 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 128 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
128 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction"))); 129 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")));
129 WixAssert.CompareLineByLine(new[] 130 WixAssert.CompareLineByLine(new[]
130 { 131 {
131 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297", 132 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297",
132 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 133 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
133 } 134 }
134 135
135 [Fact] 136 [TestMethod]
136 public void CanBuildWithWixUIInstallDirWithCustomizedEula() 137 public void CanBuildWithWixUIInstallDirWithCustomizedEula()
137 { 138 {
138 var folder = TestData.Get(@"TestData", "WixUI_InstallDir"); 139 var folder = TestData.Get(@"TestData", "WixUI_InstallDir");
@@ -140,8 +141,8 @@ namespace WixToolsetTest.UI
140 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 141 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
141 142
142 var results = build.BuildAndQuery(BuildEula, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence"); 143 var results = build.BuildAndQuery(BuildEula, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence");
143 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); 144 WixAssert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
144 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t")); 145 WixAssert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
145 WixAssert.CompareLineByLine(new[] 146 WixAssert.CompareLineByLine(new[]
146 { 147 {
147 "Binary:WixUI_Bmp_Banner\t[Binary data]", 148 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -171,7 +172,7 @@ namespace WixToolsetTest.UI
171 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 172 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
172 } 173 }
173 174
174 [Fact] 175 [TestMethod]
175 public void CanBuildUsingWixUIMinimal() 176 public void CanBuildUsingWixUIMinimal()
176 { 177 {
177 var folder = TestData.Get(@"TestData", "WixUI_Minimal"); 178 var folder = TestData.Get(@"TestData", "WixUI_Minimal");
@@ -179,7 +180,7 @@ namespace WixToolsetTest.UI
179 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 180 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
180 181
181 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 182 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
182 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeEulaDlg\t")); 183 WixAssert.Single(results, result => result.StartsWith("Dialog:WelcomeEulaDlg\t"));
183 WixAssert.CompareLineByLine(new[] 184 WixAssert.CompareLineByLine(new[]
184 { 185 {
185 "Binary:WixUI_Bmp_Banner\t[Binary data]", 186 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -189,8 +190,8 @@ namespace WixToolsetTest.UI
189 "Binary:WixUI_Ico_Exclam\t[Binary data]", 190 "Binary:WixUI_Ico_Exclam\t[Binary data]",
190 "Binary:WixUI_Ico_Info\t[Binary data]", 191 "Binary:WixUI_Ico_Info\t[Binary data]",
191 }, results.Where(r => r.StartsWith("Binary:")).ToArray()); 192 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
192 Assert.Empty(results.Where(r => r.StartsWith("CustomAction:"))); 193 WixAssert.Empty(results.Where(r => r.StartsWith("CustomAction:")));
193 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction"))); 194 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")));
194 WixAssert.CompareLineByLine(new[] 195 WixAssert.CompareLineByLine(new[]
195 { 196 {
196 "InstallUISequence:WelcomeDlg\tInstalled AND PATCH\t1296", 197 "InstallUISequence:WelcomeDlg\tInstalled AND PATCH\t1296",
@@ -198,7 +199,7 @@ namespace WixToolsetTest.UI
198 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 199 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
199 } 200 }
200 201
201 [Fact] 202 [TestMethod]
202 public void CanBuildUsingWixUIMinimalInKazakh() 203 public void CanBuildUsingWixUIMinimalInKazakh()
203 { 204 {
204 var folder = TestData.Get(@"TestData", "WixUI_Minimal"); 205 var folder = TestData.Get(@"TestData", "WixUI_Minimal");
@@ -207,10 +208,10 @@ namespace WixToolsetTest.UI
207 208
208 var results = build.BuildAndQuery(BuildInKazakh, "Dialog"); 209 var results = build.BuildAndQuery(BuildInKazakh, "Dialog");
209 var welcomeDlg = results.Where(r => r.StartsWith("Dialog:WelcomeDlg\t")).Select(r => r.Split('\t')).Single(); 210 var welcomeDlg = results.Where(r => r.StartsWith("Dialog:WelcomeDlg\t")).Select(r => r.Split('\t')).Single();
210 Assert.Equal("[ProductName] бағдарламасын орнату", welcomeDlg[6]); 211 Assert.AreEqual("[ProductName] бағдарламасын орнату", welcomeDlg[6]);
211 } 212 }
212 213
213 [Fact] 214 [TestMethod]
214 public void CanBuildUsingWixUIMinimalAndReadPdb() 215 public void CanBuildUsingWixUIMinimalAndReadPdb()
215 { 216 {
216 var folder = TestData.Get(@"TestData", "WixUI_Minimal"); 217 var folder = TestData.Get(@"TestData", "WixUI_Minimal");
@@ -236,7 +237,7 @@ namespace WixToolsetTest.UI
236 } 237 }
237 } 238 }
238 239
239 [Fact] 240 [TestMethod]
240 public void CanBuildUsingWixUIMondo() 241 public void CanBuildUsingWixUIMondo()
241 { 242 {
242 var folder = TestData.Get(@"TestData", "WixUI_Mondo"); 243 var folder = TestData.Get(@"TestData", "WixUI_Mondo");
@@ -244,9 +245,9 @@ namespace WixToolsetTest.UI
244 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 245 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
245 246
246 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 247 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
247 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t")); 248 WixAssert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
248 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t")); 249 WixAssert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
249 Assert.Single(results, result => result.StartsWith("Dialog:SetupTypeDlg\t")); 250 WixAssert.Single(results, result => result.StartsWith("Dialog:SetupTypeDlg\t"));
250 WixAssert.CompareLineByLine(new[] 251 WixAssert.CompareLineByLine(new[]
251 { 252 {
252 "Binary:WixUI_Bmp_Banner\t[Binary data]", 253 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -271,7 +272,7 @@ namespace WixToolsetTest.UI
271 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 272 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
272 } 273 }
273 274
274 [Fact] 275 [TestMethod]
275 public void CanBuildUsingWixUIMondoLocalized() 276 public void CanBuildUsingWixUIMondoLocalized()
276 { 277 {
277 var folder = TestData.Get(@"TestData", "WixUI_Mondo"); 278 var folder = TestData.Get(@"TestData", "WixUI_Mondo");
@@ -285,7 +286,7 @@ namespace WixToolsetTest.UI
285 }, results.Where(s => s.StartsWith("Control:ErrorDlg\tY")).Select(s => s.Split('\t')[9]).ToArray()); 286 }, results.Where(s => s.StartsWith("Control:ErrorDlg\tY")).Select(s => s.Split('\t')[9]).ToArray());
286 } 287 }
287 288
288 [Fact] 289 [TestMethod]
289 public void CanBuildWithInstallDirAndRemovedDialog() 290 public void CanBuildWithInstallDirAndRemovedDialog()
290 { 291 {
291 var folder = TestData.Get(@"TestData", "InstallDir_NoLicense"); 292 var folder = TestData.Get(@"TestData", "InstallDir_NoLicense");
@@ -293,7 +294,7 @@ namespace WixToolsetTest.UI
293 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 294 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
294 295
295 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence"); 296 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence");
296 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); 297 WixAssert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
297 WixAssert.CompareLineByLine(new[] 298 WixAssert.CompareLineByLine(new[]
298 { 299 {
299 "Binary:WixUI_Bmp_Banner\t[Binary data]", 300 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -318,7 +319,7 @@ namespace WixToolsetTest.UI
318 "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\t1\t2", 319 "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\t1\t2",
319 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray()); 320 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
320 321
321 Assert.Empty(results.Where(result => result.Contains("LicenseAgreementDlg")).ToArray()); 322 WixAssert.Empty(results.Where(result => result.Contains("LicenseAgreementDlg")).ToArray());
322 323
323 WixAssert.CompareLineByLine(new[] 324 WixAssert.CompareLineByLine(new[]
324 { 325 {
@@ -326,7 +327,7 @@ namespace WixToolsetTest.UI
326 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 327 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
327 } 328 }
328 329
329 [Fact] 330 [TestMethod]
330 public void CanBuildWithInstallDirAndAddedDialog() 331 public void CanBuildWithInstallDirAndAddedDialog()
331 { 332 {
332 var folder = TestData.Get(@"TestData", "InstallDir_SpecialDlg"); 333 var folder = TestData.Get(@"TestData", "InstallDir_SpecialDlg");
@@ -334,7 +335,7 @@ namespace WixToolsetTest.UI
334 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 335 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
335 336
336 var results = build.BuildAndQuery(BuildX64, "Binary", "Control", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence"); 337 var results = build.BuildAndQuery(BuildX64, "Binary", "Control", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence");
337 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); 338 WixAssert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
338 WixAssert.CompareLineByLine(new[] 339 WixAssert.CompareLineByLine(new[]
339 { 340 {
340 "Binary:WixUI_Bmp_Banner\t[Binary data]", 341 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -344,23 +345,23 @@ namespace WixToolsetTest.UI
344 "Binary:WixUI_Ico_Exclam\t[Binary data]", 345 "Binary:WixUI_Ico_Exclam\t[Binary data]",
345 "Binary:WixUI_Ico_Info\t[Binary data]", 346 "Binary:WixUI_Ico_Info\t[Binary data]",
346 }, results.Where(r => r.StartsWith("Binary:")).ToArray()); 347 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
347 Assert.Empty(results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 348 WixAssert.Empty(results.Where(r => r.StartsWith("CustomAction:")).ToArray());
348 WixAssert.CompareLineByLine(new[] 349 WixAssert.CompareLineByLine(new[]
349 { 350 {
350 "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER", 351 "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER",
351 }, results.Where(r => r.StartsWith("Property:WIXUI")).ToArray()); 352 }, results.Where(r => r.StartsWith("Property:WIXUI")).ToArray());
352 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray()); 353 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
353 WixAssert.CompareLineByLine(new[] 354 WixAssert.CompareLineByLine(new[]
354 { 355 {
355 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297", 356 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297",
356 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 357 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
357 358
358 Assert.Equal(10, results.Where(result => result.StartsWith("Control:") && result.Contains("SpecialDlg")).Count()); 359 Assert.AreEqual(10, results.Where(result => result.StartsWith("Control:") && result.Contains("SpecialDlg")).Count());
359 Assert.Equal(5, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("SpecialDlg")).Count()); 360 Assert.AreEqual(5, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("SpecialDlg")).Count());
360 Assert.Single(results.Where(result => result.StartsWith("Dialog:") && result.Contains("SpecialDlg"))); 361 WixAssert.Single(results.Where(result => result.StartsWith("Dialog:") && result.Contains("SpecialDlg")));
361 } 362 }
362 363
363 [Fact] 364 [TestMethod]
364 public void CannotBuildWithV3LikeUIRef() 365 public void CannotBuildWithV3LikeUIRef()
365 { 366 {
366 var folder = TestData.Get(@"TestData", "InvalidUIRef"); 367 var folder = TestData.Get(@"TestData", "InvalidUIRef");
@@ -381,7 +382,7 @@ namespace WixToolsetTest.UI
381 382
382 var results = WixRunner.Execute(args); 383 var results = WixRunner.Execute(args);
383 var message = results.Messages.Single(); 384 var message = results.Messages.Single();
384 Assert.Equal("The identifier 'WixUI:WixUI_Mondo' is inaccessible due to its protection level.", message.ToString()); 385 Assert.AreEqual("The identifier 'WixUI:WixUI_Mondo' is inaccessible due to its protection level.", message.ToString());
385 } 386 }
386 } 387 }
387 388
diff --git a/src/ext/UI/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj b/src/ext/UI/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj
index 675f14f8..132920c5 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj
+++ b/src/ext/UI/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -16,6 +16,7 @@
16 </ItemGroup> 16 </ItemGroup>
17 17
18 <ItemGroup> 18 <ItemGroup>
19 <PackageReference Include="WixInternal.Core.TestPackage" /> 19 <PackageReference Include="WixInternal.MSTestSupport" />
20 <PackageReference Include="WixInternal.Core.MSTestPackage" />
20 </ItemGroup> 21 </ItemGroup>
21</Project> 22</Project>
diff --git a/src/ext/UI/ui.cmd b/src/ext/UI/ui.cmd
deleted file mode 100644
index a990db91..00000000
--- a/src/ext/UI/ui.cmd
+++ /dev/null
@@ -1,42 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5@set _L=%~dp0..\..\..\build\logs
6
7:parse_args
8@if /i "%1"=="release" set _C=Release
9@if /i "%1"=="inc" set _INC=1
10@if /i "%1"=="clean" set _CLEAN=1
11@if not "%1"=="" shift & goto parse_args
12
13@set _B=%~dp0..\..\..\build\UI.wixext\%_C%
14
15:: Clean
16
17@if "%_INC%"=="" call :clean
18@if NOT "%_CLEAN%"=="" goto :end
19
20@echo UI.wixext build %_C%
21
22:: Build
23msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror -bl:%_L%\ext_ui_build.binlog || exit /b
24
25:: Test
26dotnet test -c %_C% --no-build test\WixToolsetTest.UI || exit /b
27
28:: Pack
29msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.UI.wixext.csproj || exit /b
30
31@goto :end
32
33:clean
34@rd /s/q "..\..\..\build\UI.wixext" 2> nul
35@del "..\..\..\build\artifacts\WixToolset.UI.wixext.*.nupkg" 2> nul
36@del "%_L%\ext_ui_build.binlog" 2> nul
37@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.ui.wixext" 2> nul
38@exit /b
39
40:end
41@popd
42@endlocal
diff --git a/src/ext/UI/ui_t.proj b/src/ext/UI/ui_t.proj
new file mode 100644
index 00000000..0a989b6f
--- /dev/null
+++ b/src/ext/UI/ui_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.UI\WixToolsetTest.UI.csproj" />
7 <ProjectReference Include="wixext\WixToolset.UI.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)UI.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.UI.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.UI.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.UI.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs b/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs
index 13c39091..03d87e4e 100644
--- a/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs
+++ b/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs
@@ -2,19 +2,20 @@
2 2
3namespace WixToolsetTest.Util 3namespace WixToolsetTest.Util
4{ 4{
5 using System;
5 using System.IO; 6 using System.IO;
6 using System.Linq; 7 using System.Linq;
7 using System.Xml; 8 using System.Xml;
8 using WixInternal.TestSupport;
9 using WixInternal.Core.TestPackage;
10 using WixToolset.Util;
11 using Xunit;
12 using System.Xml.Linq; 9 using System.Xml.Linq;
13 using System; 10 using Microsoft.VisualStudio.TestTools.UnitTesting;
11 using WixInternal.MSTestSupport;
12 using WixInternal.Core.MSTestPackage;
13 using WixToolset.Util;
14 14
15 [TestClass]
15 public class UtilExtensionFixture 16 public class UtilExtensionFixture
16 { 17 {
17 [Fact] 18 [TestMethod]
18 public void CanBuildUsingFileShare() 19 public void CanBuildUsingFileShare()
19 { 20 {
20 var folder = TestData.Get(@"TestData\UsingFileShare"); 21 var folder = TestData.Get(@"TestData\UsingFileShare");
@@ -35,7 +36,7 @@ namespace WixToolsetTest.Util
35 }, results.OrderBy(s => s).ToArray()); 36 }, results.OrderBy(s => s).ToArray());
36 } 37 }
37 38
38 [Fact] 39 [TestMethod]
39 public void CanBuildUsingFileShareX64() 40 public void CanBuildUsingFileShareX64()
40 { 41 {
41 var folder = TestData.Get(@"TestData\UsingFileShare"); 42 var folder = TestData.Get(@"TestData\UsingFileShare");
@@ -56,7 +57,7 @@ namespace WixToolsetTest.Util
56 }, results.OrderBy(s => s).ToArray()); 57 }, results.OrderBy(s => s).ToArray());
57 } 58 }
58 59
59 [Fact] 60 [TestMethod]
60 public void CanRoundtripFileShare() 61 public void CanRoundtripFileShare()
61 { 62 {
62 var folder = TestData.Get(@"TestData", "UsingFileShare"); 63 var folder = TestData.Get(@"TestData", "UsingFileShare");
@@ -79,7 +80,7 @@ namespace WixToolsetTest.Util
79 }, utilElementNames); 80 }, utilElementNames);
80 } 81 }
81 82
82 [Fact] 83 [TestMethod]
83 public void CanBuildCloseApplication() 84 public void CanBuildCloseApplication()
84 { 85 {
85 var folder = TestData.Get(@"TestData\CloseApplication"); 86 var folder = TestData.Get(@"TestData\CloseApplication");
@@ -96,7 +97,7 @@ namespace WixToolsetTest.Util
96 }, results.OrderBy(s => s).ToArray()); 97 }, results.OrderBy(s => s).ToArray());
97 } 98 }
98 99
99 [Fact] 100 [TestMethod]
100 public void CanBuildInternetShortcutInProduct() 101 public void CanBuildInternetShortcutInProduct()
101 { 102 {
102 var folder = TestData.Get(@"TestData\InternetShortcut"); 103 var folder = TestData.Get(@"TestData\InternetShortcut");
@@ -116,7 +117,7 @@ namespace WixToolsetTest.Util
116 }, results.OrderBy(s => s).ToArray()); 117 }, results.OrderBy(s => s).ToArray());
117 } 118 }
118 119
119 [Fact] 120 [TestMethod]
120 public void CanBuildInternetShortcutInMergeModule() 121 public void CanBuildInternetShortcutInMergeModule()
121 { 122 {
122 var folder = TestData.Get(@"TestData\InternetShortcutModule"); 123 var folder = TestData.Get(@"TestData\InternetShortcutModule");
@@ -136,7 +137,7 @@ namespace WixToolsetTest.Util
136 }, results.OrderBy(s => s).ToArray()); 137 }, results.OrderBy(s => s).ToArray());
137 } 138 }
138 139
139 [Fact] 140 [TestMethod]
140 public void CanBuildWithPermissionEx() 141 public void CanBuildWithPermissionEx()
141 { 142 {
142 var folder = TestData.Get(@"TestData\PermissionEx"); 143 var folder = TestData.Get(@"TestData\PermissionEx");
@@ -153,7 +154,7 @@ namespace WixToolsetTest.Util
153 }, results.OrderBy(s => s).ToArray()); 154 }, results.OrderBy(s => s).ToArray());
154 } 155 }
155 156
156 [Fact] 157 [TestMethod]
157 public void CanBuildRemoveRegistryKeyExInMergeModule() 158 public void CanBuildRemoveRegistryKeyExInMergeModule()
158 { 159 {
159 var folder = TestData.Get(@"TestData", "RemoveRegistryKeyEx"); 160 var folder = TestData.Get(@"TestData", "RemoveRegistryKeyEx");
@@ -168,7 +169,7 @@ namespace WixToolsetTest.Util
168 }, results.OrderBy(s => s).ToArray()); 169 }, results.OrderBy(s => s).ToArray());
169 } 170 }
170 171
171 [Fact] 172 [TestMethod]
172 public void CanBuildRemoveFolderExInMergeModule() 173 public void CanBuildRemoveFolderExInMergeModule()
173 { 174 {
174 var folder = TestData.Get(@"TestData\RemoveFolderEx"); 175 var folder = TestData.Get(@"TestData\RemoveFolderEx");
@@ -183,7 +184,7 @@ namespace WixToolsetTest.Util
183 }, results.OrderBy(s => s).ToArray()); 184 }, results.OrderBy(s => s).ToArray());
184 } 185 }
185 186
186 [Fact] 187 [TestMethod]
187 public void CanBuildRemoveFolderExInPackage() 188 public void CanBuildRemoveFolderExInPackage()
188 { 189 {
189 var folder = TestData.Get(@"TestData\RemoveFolderExPackage"); 190 var folder = TestData.Get(@"TestData\RemoveFolderExPackage");
@@ -198,7 +199,7 @@ namespace WixToolsetTest.Util
198 }, results.OrderBy(s => s).ToArray()); 199 }, results.OrderBy(s => s).ToArray());
199 } 200 }
200 201
201 [Fact] 202 [TestMethod]
202 public void CanBuildServiceConfig() 203 public void CanBuildServiceConfig()
203 { 204 {
204 var folder = TestData.Get(@"TestData", "ServiceConfig"); 205 var folder = TestData.Get(@"TestData", "ServiceConfig");
@@ -215,7 +216,7 @@ namespace WixToolsetTest.Util
215 }, results.OrderBy(s => s).ToArray()); 216 }, results.OrderBy(s => s).ToArray());
216 } 217 }
217 218
218 [Fact] 219 [TestMethod]
219 public void CanBuildWithEventManifest() 220 public void CanBuildWithEventManifest()
220 { 221 {
221 var folder = TestData.Get(@"TestData\EventManifest"); 222 var folder = TestData.Get(@"TestData\EventManifest");
@@ -240,7 +241,7 @@ namespace WixToolsetTest.Util
240 }, results.OrderBy(s => s).ToArray()); 241 }, results.OrderBy(s => s).ToArray());
241 } 242 }
242 243
243 [Fact] 244 [TestMethod]
244 public void CanBuildWithQueries() 245 public void CanBuildWithQueries()
245 { 246 {
246 var folder = TestData.Get(@"TestData\Queries"); 247 var folder = TestData.Get(@"TestData\Queries");
@@ -259,7 +260,7 @@ namespace WixToolsetTest.Util
259 }, results.OrderBy(s => s).ToArray()); 260 }, results.OrderBy(s => s).ToArray());
260 } 261 }
261 262
262 [Fact] 263 [TestMethod]
263 public void CanBuildAndDecompiileQueries() 264 public void CanBuildAndDecompiileQueries()
264 { 265 {
265 var folder = TestData.Get(@"TestData\Queries"); 266 var folder = TestData.Get(@"TestData\Queries");
@@ -285,7 +286,7 @@ namespace WixToolsetTest.Util
285 }, utilElementNames); 286 }, utilElementNames);
286 } 287 }
287 288
288 [Fact] 289 [TestMethod]
289 public void CanBuildWithXmlConfig() 290 public void CanBuildWithXmlConfig()
290 { 291 {
291 var folder = TestData.Get(@"TestData", "XmlConfig"); 292 var folder = TestData.Get(@"TestData", "XmlConfig");
@@ -301,7 +302,7 @@ namespace WixToolsetTest.Util
301 }, results.OrderBy(s => s).ToArray()); 302 }, results.OrderBy(s => s).ToArray());
302 } 303 }
303 304
304 [Fact] 305 [TestMethod]
305 public void CanRoundtripXmlConfig() 306 public void CanRoundtripXmlConfig()
306 { 307 {
307 var folder = TestData.Get(@"TestData", "XmlConfig"); 308 var folder = TestData.Get(@"TestData", "XmlConfig");
@@ -324,7 +325,7 @@ namespace WixToolsetTest.Util
324 }, utilElementNames); 325 }, utilElementNames);
325 } 326 }
326 327
327 [Fact] 328 [TestMethod]
328 public void CanBuildModuleWithXmlConfig() 329 public void CanBuildModuleWithXmlConfig()
329 { 330 {
330 var folder = TestData.Get(@"TestData", "XmlConfigModule"); 331 var folder = TestData.Get(@"TestData", "XmlConfigModule");
@@ -338,7 +339,7 @@ namespace WixToolsetTest.Util
338 }, results.OrderBy(s => s).ToArray()); 339 }, results.OrderBy(s => s).ToArray());
339 } 340 }
340 341
341 [Fact] 342 [TestMethod]
342 public void CanBuildBundleWithSearches() 343 public void CanBuildBundleWithSearches()
343 { 344 {
344 var folder = TestData.Get(@"TestData\BundleWithSearches"); 345 var folder = TestData.Get(@"TestData\BundleWithSearches");
@@ -366,15 +367,15 @@ namespace WixToolsetTest.Util
366 367
367 result.AssertSuccess(); 368 result.AssertSuccess();
368 369
369 Assert.True(File.Exists(bundlePath)); 370 Assert.IsTrue(File.Exists(bundlePath));
370 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); 371 Assert.IsTrue(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb")));
371 372
372 var extractResult = BundleExtractor.ExtractBAContainer(null, bundlePath, baFolderPath, extractFolderPath); 373 var extractResult = BundleExtractor.ExtractBAContainer(null, bundlePath, baFolderPath, extractFolderPath);
373 extractResult.AssertSuccess(); 374 extractResult.AssertSuccess();
374 375
375 var bootstrapperExtensionDatas = extractResult.SelectBootstrapperExtensionDataNodes("/be:BootstrapperExtensionData/be:BootstrapperExtension[@Id='Wix4UtilBootstrapperExtension_X86']"); 376 var bootstrapperExtensionDatas = extractResult.SelectBootstrapperExtensionDataNodes("/be:BootstrapperExtensionData/be:BootstrapperExtension[@Id='Wix4UtilBootstrapperExtension_X86']");
376 Assert.Equal(1, bootstrapperExtensionDatas.Count); 377 Assert.AreEqual(1, bootstrapperExtensionDatas.Count);
377 Assert.Equal("<BootstrapperExtension Id='Wix4UtilBootstrapperExtension_X86'>" + 378 Assert.AreEqual("<BootstrapperExtension Id='Wix4UtilBootstrapperExtension_X86'>" +
378 "<WixWindowsFeatureSearch Id='DetectSHA2SupportId' Type='sha2CodeSigning' />" + 379 "<WixWindowsFeatureSearch Id='DetectSHA2SupportId' Type='sha2CodeSigning' />" +
379 "</BootstrapperExtension>", bootstrapperExtensionDatas[0].GetTestXml()); 380 "</BootstrapperExtension>", bootstrapperExtensionDatas[0].GetTestXml());
380 381
@@ -394,7 +395,7 @@ namespace WixToolsetTest.Util
394 } 395 }
395 } 396 }
396 397
397 [Fact] 398 [TestMethod]
398 public void CanCreateUserGroupWithComment() 399 public void CanCreateUserGroupWithComment()
399 { 400 {
400 var folder = TestData.Get(@"TestData\CreateGroup"); 401 var folder = TestData.Get(@"TestData\CreateGroup");
@@ -550,7 +551,7 @@ namespace WixToolsetTest.Util
550 }, results.OrderBy(s => s).ToArray()); 551 }, results.OrderBy(s => s).ToArray());
551 } 552 }
552 553
553 [Fact] 554 [TestMethod]
554 public void CanCreateUserAccountWithComment() 555 public void CanCreateUserAccountWithComment()
555 { 556 {
556 var folder = TestData.Get(@"TestData\CreateUser"); 557 var folder = TestData.Get(@"TestData\CreateUser");
@@ -626,7 +627,7 @@ namespace WixToolsetTest.Util
626 }, results.OrderBy(s => s).ToArray()); 627 }, results.OrderBy(s => s).ToArray());
627 } 628 }
628 629
629 [Fact] 630 [TestMethod]
630 public void CannotBuildBundleWithSearchesUsingBuiltinVariableNames() 631 public void CannotBuildBundleWithSearchesUsingBuiltinVariableNames()
631 { 632 {
632 var folder = TestData.Get("TestData", "BundleWithSearches"); 633 var folder = TestData.Get("TestData", "BundleWithSearches");
diff --git a/src/ext/Util/test/WixToolsetTest.Util/WixToolsetTest.Util.csproj b/src/ext/Util/test/WixToolsetTest.Util/WixToolsetTest.Util.csproj
index 16d0e138..4036c3ab 100644
--- a/src/ext/Util/test/WixToolsetTest.Util/WixToolsetTest.Util.csproj
+++ b/src/ext/Util/test/WixToolsetTest.Util/WixToolsetTest.Util.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -16,6 +16,7 @@
16 </ItemGroup> 16 </ItemGroup>
17 17
18 <ItemGroup> 18 <ItemGroup>
19 <PackageReference Include="WixInternal.Core.TestPackage" /> 19 <PackageReference Include="WixInternal.MSTestSupport" />
20 <PackageReference Include="WixInternal.Core.MSTestPackage" />
20 </ItemGroup> 21 </ItemGroup>
21</Project> 22</Project>
diff --git a/src/ext/Util/util.cmd b/src/ext/Util/util.cmd
deleted file mode 100644
index 3c66e7d8..00000000
--- a/src/ext/Util/util.cmd
+++ /dev/null
@@ -1,45 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5@set _L=%~dp0..\..\..\build\logs
6
7:parse_args
8@if /i "%1"=="release" set _C=Release
9@if /i "%1"=="inc" set _INC=1
10@if /i "%1"=="clean" set _CLEAN=1
11@if not "%1"=="" shift & goto parse_args
12
13@set _B=%~dp0..\..\..\build\Util.wixext\%_C%
14
15:: Clean
16
17@if "%_INC%"=="" call :clean
18@if NOT "%_CLEAN%"=="" goto :end
19
20@echo Building ext\Util %_C% using %_N%
21
22:: Build
23msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror -bl:%_L%\ext_util_build.binlog || exit /b
24
25:: Test
26dotnet test ^
27 %_B%\net6.0\WixToolsetTest.Util.dll ^
28 --nologo -l "trx;LogFileName=%_L%\TestResults\util.wixext.trx" || exit /b
29
30:: Pack
31msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.Util.wixext.csproj || exit /b
32
33@goto :end
34
35:clean
36@rd /s/q "..\..\build\Util.wixext" 2> nul
37@del "..\..\build\artifacts\WixToolset.Util.wixext.*.nupkg" 2> nul
38@del "%_L%\ext_util_build.binlog" 2> nul
39@del "%_L%\TestResults\util.wixext.trx" 2> nul
40@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.util.wixext" 2> nul
41@exit /b
42
43:end
44@popd
45@endlocal
diff --git a/src/ext/Util/util_t.proj b/src/ext/Util/util_t.proj
new file mode 100644
index 00000000..e1da6adf
--- /dev/null
+++ b/src/ext/Util/util_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.Util\WixToolsetTest.Util.csproj" />
7 <ProjectReference Include="wixext\WixToolset.Util.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)Util.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.util.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.util.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.Util.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs
index f3e81e2d..992ac953 100644
--- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs
+++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/VisualStudioExtensionFixture.cs
@@ -2,15 +2,16 @@
2 2
3namespace WixToolsetTest.VisualStudio 3namespace WixToolsetTest.VisualStudio
4{ 4{
5 using WixInternal.TestSupport; 5 using Microsoft.VisualStudio.TestTools.UnitTesting;
6 using WixInternal.Core.TestPackage; 6 using WixInternal.MSTestSupport;
7 using WixInternal.Core.MSTestPackage;
7 using WixToolset.VisualStudio; 8 using WixToolset.VisualStudio;
8 using Xunit;
9 using System.Linq; 9 using System.Linq;
10 10
11 [TestClass]
11 public class VisualStudioExtensionFixture 12 public class VisualStudioExtensionFixture
12 { 13 {
13 [Fact] 14 [TestMethod]
14 public void CanBuildUsingVsixPackage() 15 public void CanBuildUsingVsixPackage()
15 { 16 {
16 var folder = TestData.Get(@"TestData\UsingVsixPackage"); 17 var folder = TestData.Get(@"TestData\UsingVsixPackage");
@@ -36,7 +37,7 @@ namespace WixToolsetTest.VisualStudio
36 }, results); 37 }, results);
37 } 38 }
38 39
39 [Fact] 40 [TestMethod]
40 public void CanBuildUsingVsixPackageOnArm64() 41 public void CanBuildUsingVsixPackageOnArm64()
41 { 42 {
42 var folder = TestData.Get(@"TestData\UsingVsixPackage"); 43 var folder = TestData.Get(@"TestData\UsingVsixPackage");
diff --git a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/WixToolsetTest.VisualStudio.csproj b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/WixToolsetTest.VisualStudio.csproj
index 2b0a7c1c..9cfb6867 100644
--- a/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/WixToolsetTest.VisualStudio.csproj
+++ b/src/ext/VisualStudio/test/WixToolsetTest.VisualStudio/WixToolsetTest.VisualStudio.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -16,6 +16,7 @@
16 </ItemGroup> 16 </ItemGroup>
17 17
18 <ItemGroup> 18 <ItemGroup>
19 <PackageReference Include="WixInternal.Core.TestPackage" /> 19 <PackageReference Include="WixInternal.MSTestSupport" />
20 <PackageReference Include="WixInternal.Core.MSTestPackage" />
20 </ItemGroup> 21 </ItemGroup>
21</Project> 22</Project>
diff --git a/src/ext/VisualStudio/visualstudio_t.proj b/src/ext/VisualStudio/visualstudio_t.proj
new file mode 100644
index 00000000..52de8019
--- /dev/null
+++ b/src/ext/VisualStudio/visualstudio_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.VisualStudio\WixToolsetTest.VisualStudio.csproj" />
7 <ProjectReference Include="wixext\WixToolset.VisualStudio.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)VisualStudio.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.VisualStudio.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.VisualStudio.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.VisualStudio.wixext.*.nupkg" />
16 </Target>
17</Project>
diff --git a/src/ext/VisualStudio/vs.cmd b/src/ext/VisualStudio/vs.cmd
deleted file mode 100644
index f0873f1d..00000000
--- a/src/ext/VisualStudio/vs.cmd
+++ /dev/null
@@ -1,21 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5:parse_args
6@if /i "%1"=="release" set _C=Release
7@if not "%1"=="" shift & goto parse_args
8
9@echo VisualStudio.wixext build %_C%
10
11:: Build
12msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror || exit /b
13
14:: Test
15dotnet test -c %_C% --no-build test\WixToolsetTest.VisualStudio || exit /b
16
17:: Pack
18msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.VisualStudio.wixext.csproj || exit /b
19
20@popd
21@endlocal
diff --git a/src/ext/ext.cmd b/src/ext/ext.cmd
index 8575b81e..86aac47b 100644
--- a/src/ext/ext.cmd
+++ b/src/ext/ext.cmd
@@ -2,58 +2,15 @@
2@pushd %~dp0 2@pushd %~dp0
3 3
4@set _C=Debug 4@set _C=Debug
5@set _L=%~dp0..\..\build\logs
6@set _SuppressWixClean=false
7
5:parse_args 8:parse_args
6@if /i "%1"=="release" set _C=Release 9@if /i "%1"=="release" set _C=Release
10@if /i "%1"=="inc" set _SuppressWixClean=true
7@if not "%1"=="" shift & goto parse_args 11@if not "%1"=="" shift & goto parse_args
8 12
9@echo ext build %_C% 13msbuild ext_t.proj -p:Configuration=%_C% -p:SuppressWixClean=%_SuppressWixClean% -m -tl -nologo -warnaserror -bl:%_L%\ext_build.binlog || exit /b
10
11:: These extensions must be built in this order.
12
13:: Util
14call Util\util.cmd %_C% || exit /b
15
16:: Bal
17call Bal\bal.cmd %_C% || exit /b
18
19:: NetFx
20call NetFx\netfx.cmd %_C% || exit /b
21
22
23:: The rest of the extensions are in alphabetical order.
24
25:: ComPlus
26call ComPlus\complus.cmd %_C% || exit /b
27
28:: Dependency
29call Dependency\dependency.cmd %_C% || exit /b
30
31:: DirectX
32call DirectX\directx.cmd %_C% || exit /b
33
34:: Firewall
35call Firewall\firewall.cmd %_C% || exit /b
36
37:: Http
38call Http\http.cmd %_C% || exit /b
39
40:: Iis
41call Iis\iis.cmd %_C% || exit /b
42
43:: Msmq
44call Msmq\msmq.cmd %_C% || exit /b
45
46:: PowerShell
47call PowerShell\ps.cmd %_C% || exit /b
48
49:: Sql
50call Sql\sql.cmd %_C% || exit /b
51
52:: UI
53call UI\ui.cmd %_C% || exit /b
54
55:: VisualStudio
56call VisualStudio\vs.cmd %_C% || exit /b
57 14
58@popd 15@popd
59@endlocal 16@endlocal
diff --git a/src/ext/ext_t.proj b/src/ext/ext_t.proj
new file mode 100644
index 00000000..e3301172
--- /dev/null
+++ b/src/ext/ext_t.proj
@@ -0,0 +1,30 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <!-- These projects are "special." -->
7 <ProjectReference Include="Util\util_t.proj" BuildInParallel="false" Targets="Restore;Build" Properties="SuppressWixTests=true" />
8 <ProjectReference Include="Bal\bal_t.proj" BuildInParallel="false" Targets="Restore;Build" Properties="SuppressWixTests=true" />
9 <!-- <ProjectReference Include="NetFx\netfx_t.proj" BuildInParallel="false" Targets="Restore;Build" Properties="SuppressWixTests=true" /> -->
10
11 <!-- Now run tests we skipped earlier along with everything in parallel. -->
12 <ProjectReference Include="Util\util_t.proj" Targets="Build" />
13 <ProjectReference Include="Bal\bal_t.proj" Targets="Build" />
14 <!-- <ProjectReference Include="NetFx\netfx_t.proj" Targets="Build" /> -->
15
16 <ProjectReference Include="NetFx\netfx_t.proj" BuildInParallel="false" Targets="Restore;Build" />
17 <ProjectReference Include="ComPlus\complus_t.proj" Targets="Restore;Build" />
18 <ProjectReference Include="Dependency\dependency_t.proj" Targets="Restore;Build" />
19 <ProjectReference Include="DirectX\directx_t.proj" Targets="Restore;Build" />
20 <ProjectReference Include="Firewall\firewall_t.proj" Targets="Restore;Build" />
21 <ProjectReference Include="Http\http_t.proj" Targets="Restore;Build" />
22 <ProjectReference Include="Iis\iis_t.proj" Targets="Restore;Build" />
23 <ProjectReference Include="Msmq\msmq_t.proj" Targets="Restore;Build" />
24 <ProjectReference Include="NetFx\netfx_t.proj" Targets="Restore;Build" />
25 <ProjectReference Include="PowerShell\powershell_t.proj" Targets="Restore;Build" />
26 <ProjectReference Include="Sql\sql_t.proj" Targets="Restore;Build" />
27 <ProjectReference Include="UI\ui_t.proj" Targets="Restore;Build" />
28 <ProjectReference Include="VisualStudio\visualstudio_t.proj" Targets="Restore;Build" />
29 </ItemGroup>
30</Project>