@joebigelow / wix-1 / commits / bd05b603

Allow independent extraction of BA to remove use of InternalsVisibleTo

If tests need functionality, it is reasonable to expect users may require it in the future as well. To support the bundle tests, they needed independent extraction of BA from attached containers. So, add a new switch to extract the BA separate from the containers.

Rob Mensching committed Sep 30, 2022 at 17:59 UTC bd05b603142673135ac66cdbc81a2ae3028cb37f
11 files changed +55 -137
src/testresultfilelist.txt
-1
@@ -11,7 +11,6 @@ build/logs/TestResults/WixToolsetTest.BurnE2E.trx
11 build/logs/TestResults/WixToolsetTest.Converters.trx
12 build/logs/TestResults/WixToolsetTest.Converters.Symbolizer.trx
13 build/logs/TestResults/WixToolsetTest.Core.trx
14 -build/logs/TestResults/WixToolsetTest.Core.Burn.trx
14 build/logs/TestResults/WixToolsetTest.Core.Native.trx
15 build/logs/TestResults/WixToolsetTest.CoreIntegration.trx
16 build/logs/TestResults/WixToolsetTest.Dnc.HostGenerator.trx
src/wix/WixToolset.Core.Burn/CommandLine/ExtractSubcommand.cs
+20 -8
@@ -27,13 +27,16 @@ namespace WixToolset.Core.Burn.CommandLine
27
28 private string IntermediateFolder { get; set; }
29
30 - private string ExtractPath { get; set; }
30 + private string ExtractBootstrapperApplicationPath { get; set; }
31 +
32 + private string ExtractContainersPath { get; set; }
33
34 public override CommandLineHelp GetCommandLineHelp()
35 {
36 return new CommandLineHelp("Extracts the internals of a bundle to a folder.", "burn extract [options] bundle.exe -o outputfolder ", new[]
37 {
38 new CommandLineHelpSwitch("-intermediateFolder", "Optional working folder. If not specified %TMP% will be used."),
39 + new CommandLineHelpSwitch("-outba", "-oba", "Folder to extract the bundle bootstrapper application to."),
40 new CommandLineHelpSwitch("-out", "-o", "Folder to extract the bundle contents to."),
41 });
42 }
@@ -44,7 +47,7 @@ namespace WixToolset.Core.Burn.CommandLine
47 {
48 this.Messaging.Write(ErrorMessages.FilePathRequired("input bundle"));
49 }
47 - else if (String.IsNullOrEmpty(this.ExtractPath))
50 + else if (String.IsNullOrEmpty(this.ExtractBootstrapperApplicationPath) && String.IsNullOrEmpty(this.ExtractContainersPath))
51 {
52 this.Messaging.Write(ErrorMessages.FilePathRequired("output the extracted bundle"));
53 }
@@ -55,19 +58,23 @@ namespace WixToolset.Core.Burn.CommandLine
58 this.IntermediateFolder = Path.GetTempPath();
59 }
60
58 - var uxExtractPath = Path.Combine(this.ExtractPath, "BA");
59 -
61 using (var reader = BurnReader.Open(this.Messaging, this.FileSystem, this.InputPath))
62 {
62 - reader.ExtractUXContainer(uxExtractPath, this.IntermediateFolder);
63 + if (!String.IsNullOrEmpty(this.ExtractBootstrapperApplicationPath))
64 + {
65 + reader.ExtractUXContainer(this.ExtractBootstrapperApplicationPath, this.IntermediateFolder);
66 + }
67
68 try
69 {
66 - reader.ExtractAttachedContainers(this.ExtractPath, this.IntermediateFolder);
70 + if (!String.IsNullOrEmpty(this.ExtractContainersPath))
71 + {
72 + reader.ExtractAttachedContainers(this.ExtractContainersPath, this.IntermediateFolder);
73 + }
74 }
75 catch
76 {
70 - this.Messaging.Write(BurnBackendWarnings.FailedToExtractAttachedContainers(new Data.SourceLineNumber(this.ExtractPath)));
77 + this.Messaging.Write(BurnBackendWarnings.FailedToExtractAttachedContainers(new SourceLineNumber(this.ExtractContainersPath)));
78 }
79 }
80 }
@@ -85,10 +92,15 @@ namespace WixToolset.Core.Burn.CommandLine
92 case "intermediatefolder":
93 this.IntermediateFolder = parser.GetNextArgumentAsDirectoryOrError(argument);
94 return true;
95 +
96 + case "oba":
97 + case "outba":
98 + this.ExtractBootstrapperApplicationPath = parser.GetNextArgumentAsDirectoryOrError(argument);
99 + return true;
100
101 case "o":
102 case "out":
91 - this.ExtractPath = parser.GetNextArgumentAsDirectoryOrError(argument);
103 + this.ExtractContainersPath = parser.GetNextArgumentAsDirectoryOrError(argument);
104 return true;
105 }
106 }
src/wix/WixToolset.Core.Burn/WixToolset.Core.Burn.csproj
-12
@@ -14,18 +14,6 @@
14 <GitThisAssembly>true</GitThisAssembly>
15 </PropertyGroup>
16
17 - <ItemGroup>
18 - <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
19 - <_Parameter1>WixToolset.Core.TestPackage, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a9967ec28982f42ee51a47dd5204315975a6ed69294b982146a99a70130a2fa13e226aaddde14c17d1bf3af69e8956d69a86585e74d208efcc5ac98a0686055327b2e87960d3c39bf3a6bc1e572863327d19dbf4fd2616dda124dbea260755a2d1d39d3cf1049ea526493eb2bf996b8ad985e3012308529e5b9b0f5cd5fa04bd</_Parameter1>
20 - </AssemblyAttribute>
21 - <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
22 - <_Parameter1>WixToolsetTest.Core.Burn, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a9967ec28982f42ee51a47dd5204315975a6ed69294b982146a99a70130a2fa13e226aaddde14c17d1bf3af69e8956d69a86585e74d208efcc5ac98a0686055327b2e87960d3c39bf3a6bc1e572863327d19dbf4fd2616dda124dbea260755a2d1d39d3cf1049ea526493eb2bf996b8ad985e3012308529e5b9b0f5cd5fa04bd</_Parameter1>
23 - </AssemblyAttribute>
24 - <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
25 - <_Parameter1>WixToolsetTest.CoreIntegration, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a9967ec28982f42ee51a47dd5204315975a6ed69294b982146a99a70130a2fa13e226aaddde14c17d1bf3af69e8956d69a86585e74d208efcc5ac98a0686055327b2e87960d3c39bf3a6bc1e572863327d19dbf4fd2616dda124dbea260755a2d1d39d3cf1049ea526493eb2bf996b8ad985e3012308529e5b9b0f5cd5fa04bd</_Parameter1>
26 - </AssemblyAttribute>
27 - </ItemGroup>
28 -
17 <ItemGroup>
18 <ProjectReference Include="..\WixToolset.Core\WixToolset.Core.csproj" />
19 <ProjectReference Include="..\WixToolset.Core.Native\WixToolset.Core.Native.csproj" />
src/wix/WixToolset.Core.TestPackage/BundleExtractor.cs
+27 -28
@@ -2,9 +2,10 @@
2
3 namespace WixToolset.Core.TestPackage
4 {
5 + using System;
6 + using System.Collections.Generic;
7 using System.IO;
8 using System.Xml;
7 - using WixToolset.Core.Burn.Bundles;
9 using WixToolset.Data.Burn;
10 using WixToolset.Extensibility.Services;
11
@@ -13,6 +14,10 @@ namespace WixToolset.Core.TestPackage
14 /// </summary>
15 public class BundleExtractor
16 {
17 + private const string BurnNamespace = "http://wixtoolset.org/schemas/v4/2008/Burn";
18 + private const string BADataFileName = "BootstrapperApplicationData.xml";
19 + private const string BundleExtensionDataFileName = "BundleExtensionData.xml";
20 +
21 /// <summary>
22 /// Extracts the BA container.
23 /// </summary>
@@ -32,25 +37,34 @@ namespace WixToolset.Core.TestPackage
37 /// <param name="messaging"></param>
38 /// <param name="bundleFilePath">Path to the bundle.</param>
39 /// <param name="baFolderPath">Path to extract BA to.</param>
35 - /// <param name="otherContainersFolderPath">Path to extract other attached containers to.</param>
40 + /// <param name="otherContainersFolderPath">Optional path to extract other attached containers to.</param>
41 /// <param name="tempFolderPath">Temp path for extraction.</param>
42 /// <returns></returns>
43 public static ExtractBAContainerResult ExtractAllContainers(IMessaging messaging, string bundleFilePath, string baFolderPath, string otherContainersFolderPath, string tempFolderPath)
44 {
40 - var result = new ExtractBAContainerResult();
45 Directory.CreateDirectory(tempFolderPath);
42 - using (var burnReader = BurnReader.Open(messaging, new TestFileSystem(), bundleFilePath))
46 +
47 + var args = new List<string>
48 {
44 - result.Success = burnReader.ExtractUXContainer(baFolderPath, tempFolderPath);
49 + "burn", "extract",
50 + "-intermediatefolder", tempFolderPath,
51 + bundleFilePath,
52 + "-oba", baFolderPath
53 + };
54
46 - if (otherContainersFolderPath != null)
47 - {
48 - result.AttachedContainersSuccess = burnReader.ExtractAttachedContainers(otherContainersFolderPath, tempFolderPath);
49 - }
55 + if (!String.IsNullOrEmpty(otherContainersFolderPath))
56 + {
57 + args.Add("-o");
58 + args.Add(otherContainersFolderPath);
59 }
60
52 - if (result.Success)
61 + var runnerResult = WixRunner.Execute(args.ToArray());
62 +
63 + var result = new ExtractBAContainerResult();
64 +
65 + if (runnerResult.ExitCode == 0)
66 {
67 + result.Success = true;
68 result.ManifestDocument = LoadBurnManifest(baFolderPath);
69 result.ManifestNamespaceManager = GetBurnNamespaceManager(result.ManifestDocument, "burn");
70
@@ -99,7 +113,7 @@ namespace WixToolset.Core.TestPackage
113 public static XmlNamespaceManager GetBurnNamespaceManager(XmlDocument document, string prefix)
114 {
115 var namespaceManager = new XmlNamespaceManager(document.NameTable);
102 - namespaceManager.AddNamespace(prefix, BurnCommon.BurnNamespace);
116 + namespaceManager.AddNamespace(prefix, BurnNamespace);
117 return namespaceManager;
118 }
119
@@ -111,7 +125,7 @@ namespace WixToolset.Core.TestPackage
125 public static XmlDocument LoadBAData(string baFolderPath)
126 {
127 var document = new XmlDocument();
114 - document.Load(Path.Combine(baFolderPath, BurnCommon.BADataFileName));
128 + document.Load(Path.Combine(baFolderPath, BADataFileName));
129 return document;
130 }
131
@@ -123,7 +137,7 @@ namespace WixToolset.Core.TestPackage
137 public static XmlDocument LoadBundleExtensionData(string baFolderPath)
138 {
139 var document = new XmlDocument();
126 - document.Load(Path.Combine(baFolderPath, BurnCommon.BundleExtensionDataFileName));
140 + document.Load(Path.Combine(baFolderPath, BundleExtensionDataFileName));
141 return document;
142 }
143
@@ -138,20 +152,5 @@ namespace WixToolset.Core.TestPackage
152 document.Load(Path.Combine(baFolderPath, "manifest.xml"));
153 return document;
154 }
141 -
142 - private class TestFileSystem : IFileSystem
143 - {
144 - public void CopyFile(string source, string destination, bool allowHardlink)
145 - {
146 - Directory.CreateDirectory(Path.GetDirectoryName(destination));
147 - File.Copy(source, destination);
148 - }
149 -
150 - public void MoveFile(string source, string destination)
151 - {
152 - Directory.CreateDirectory(Path.GetDirectoryName(destination));
153 - File.Move(source, destination);
154 - }
155 - }
155 }
156 }
src/wix/test/WixToolsetTest.Core.Burn/BurnReaderFixture.cs deleted
-44
@@ -1,44 +0,0 @@
1 -// 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 -
3 -namespace WixToolsetTest.Core.Burn
4 -{
5 - using System;
6 - using WixToolset.Core.Burn.Bundles;
7 - using Xunit;
8 -
9 - public class BurnReaderFixture
10 - {
11 - [Fact]
12 - public void CanReadUInt16Max()
13 - {
14 - var bytes = new byte[] { 0xFF, 0xFF };
15 - var offset = 0u;
16 -
17 - var result = BurnCommon.ReadUInt16(bytes, offset);
18 -
19 - Assert.Equal(UInt16.MaxValue, result);
20 - }
21 -
22 - [Fact]
23 - public void CanReadUInt32Max()
24 - {
25 - var bytes = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF };
26 - var offset = 0u;
27 -
28 - var result = BurnCommon.ReadUInt32(bytes, offset);
29 -
30 - Assert.Equal(UInt32.MaxValue, result);
31 - }
32 -
33 - [Fact]
34 - public void CanReadUInt64Max()
35 - {
36 - var bytes = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
37 - var offset = 0u;
38 -
39 - var result = BurnCommon.ReadUInt64(bytes, offset);
40 -
41 - Assert.Equal(UInt64.MaxValue, result);
42 - }
43 - }
44 -}
src/wix/test/WixToolsetTest.Core.Burn/WixToolsetTest.Core.Burn.csproj deleted
-17
@@ -1,17 +0,0 @@
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.NET.Sdk">
5 - <PropertyGroup>
6 - <TargetFramework>netcoreapp3.1</TargetFramework>
7 - <IsWixTestProject>true</IsWixTestProject>
8 - </PropertyGroup>
9 -
10 - <ItemGroup>
11 - <ProjectReference Include="..\..\WixToolset.Core.Burn\WixToolset.Core.Burn.csproj" />
12 - </ItemGroup>
13 -
14 - <ItemGroup>
15 - <PackageReference Include="WixBuildTools.TestSupport" />
16 - </ItemGroup>
17 -</Project>
src/wix/test/WixToolsetTest.CoreIntegration/BundleExtractionFixture.cs
+1
@@ -46,6 +46,7 @@ namespace WixToolsetTest.CoreIntegration
46 {
47 "burn", "extract",
48 exePath,
49 + "-oba", baFolderPath,
50 "-o", extractFolderPath
51 });
52
src/wix/test/WixToolsetTest.CoreIntegration/BundleFixture.cs
+6 -6
@@ -140,7 +140,7 @@ namespace WixToolsetTest.CoreIntegration
140 switch (attribute.LocalName)
141 {
142 case "EngineVersion":
143 - WixAssert.StringEqual($"{ThisAssembly.Git.BaseVersion.Major}.{ThisAssembly.Git.BaseVersion.Minor}.{ThisAssembly.Git.BaseVersion.Patch}.{ThisAssembly.Git.Commits}", attribute.Value);
143 + Assert.True(Version.TryParse(attribute.Value, out var _));
144 break;
145 case "ProtocolVersion":
146 WixAssert.StringEqual("1", attribute.Value);
@@ -252,7 +252,7 @@ namespace WixToolsetTest.CoreIntegration
252 switch (attribute.LocalName)
253 {
254 case "EngineVersion":
255 - WixAssert.StringEqual($"{ThisAssembly.Git.BaseVersion.Major}.{ThisAssembly.Git.BaseVersion.Minor}.{ThisAssembly.Git.BaseVersion.Patch}.{ThisAssembly.Git.Commits}", attribute.Value);
255 + Assert.True(Version.TryParse(attribute.Value, out var _));
256 break;
257 case "ProtocolVersion":
258 WixAssert.StringEqual("1", attribute.Value);
@@ -553,7 +553,7 @@ namespace WixToolsetTest.CoreIntegration
553 "-o", exePath,
554 });
555
556 - var attachedContainerWarnings = result.Messages.Where(m => m.Id == (int)BurnBackendWarnings.Ids.AttachedContainerPayloadCollision)
556 + var attachedContainerWarnings = result.Messages.Where(m => m.Id == 8500)
557 .Select(m => m.ToString())
558 .ToArray();
559 WixAssert.CompareLineByLine(new string[]
@@ -561,7 +561,7 @@ namespace WixToolsetTest.CoreIntegration
561 "The Payload 'Auto2' has a duplicate Name 'burn.exe' in the attached container. When extracting the bundle with dark.exe, the file will get overwritten.",
562 }, attachedContainerWarnings);
563
564 - var baContainerErrors = result.Messages.Where(m => m.Id == (int)BurnBackendErrors.Ids.BAContainerPayloadCollision)
564 + var baContainerErrors = result.Messages.Where(m => m.Id == 8002)
565 .Select(m => m.ToString())
566 .ToArray();
567 WixAssert.CompareLineByLine(new string[]
@@ -571,7 +571,7 @@ namespace WixToolsetTest.CoreIntegration
571 "The Payload 'uxYRbgitOs0K878jn5L_z7LdJ21KI' has a duplicate Name 'BundleExtensionData.xml' in the BA container. When extracting the container at runtime, the file will get overwritten.",
572 }, baContainerErrors);
573
574 - var externalErrors = result.Messages.Where(m => m.Id == (int)BurnBackendErrors.Ids.ExternalPayloadCollision)
574 + var externalErrors = result.Messages.Where(m => m.Id == 8004)
575 .Select(m => m.ToString())
576 .ToArray();
577 WixAssert.CompareLineByLine(new string[]
@@ -580,7 +580,7 @@ namespace WixToolsetTest.CoreIntegration
580 "The external Container 'MsiPackagesContainer' has a duplicate Name 'ContainerCollision'. When building the bundle or laying out the bundle, the file will get overwritten.",
581 }, externalErrors);
582
583 - var packageCacheErrors = result.Messages.Where(m => m.Id == (int)BurnBackendErrors.Ids.PackageCachePayloadCollision)
583 + var packageCacheErrors = result.Messages.Where(m => m.Id == 8006)
584 .Select(m => m.ToString())
585 .ToArray();
586 WixAssert.CompareLineByLine(new string[]
src/wix/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj
+1 -1
@@ -21,6 +21,6 @@
21 </ItemGroup>
22
23 <ItemGroup>
24 - <PackageReference Include="WixBuildTools.TestSupport" />
24 + <PackageReference Include="WixBuildTools.TestSupport" />
25 </ItemGroup>
26 </Project>
src/wix/wix.cmd
-1
@@ -27,7 +27,6 @@ msbuild wix.sln -p:Configuration=%_C% -nologo -m -warnaserror -bl:%_L%\wix_build
27 dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.Converters -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Converters.trx" || exit /b
28 dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.Converters.Symbolizer -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Converters.Symbolizer.trx" || exit /b
29 dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.Core -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Core.trx" || exit /b
30 -dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.Core.Burn -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Core.Burn.trx" || exit /b
30 dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.Core.Native -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Core.Native.trx" || exit /b
31 dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.CoreIntegration -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.CoreIntegration.trx" || exit /b
32
src/wix/wix.sln
-19
@@ -24,8 +24,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Example.Extension", "test\E
24 EndProject
25 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolsetTest.CoreIntegration", "test\WixToolsetTest.CoreIntegration\WixToolsetTest.CoreIntegration.csproj", "{E8A08E86-1780-4ED4-8F63-AB2B52C1C16B}"
26 EndProject
27 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolsetTest.Core.Burn", "test\WixToolsetTest.Core.Burn\WixToolsetTest.Core.Burn.csproj", "{DF63F589-028E-45A1-A212-948FACF1FDCD}"
28 -EndProject
27 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.Core.TestPackage", "WixToolset.Core.TestPackage\WixToolset.Core.TestPackage.csproj", "{853716DB-C02C-41BD-91BC-79CDC0C17D10}"
28 EndProject
29 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompileCoreTestExtensionWixlib", "test\CompileCoreTestExtensionWixlib\CompileCoreTestExtensionWixlib.csproj", "{23FC60D7-B101-42F8-9786-DB7A9CD964A2}"
@@ -222,22 +220,6 @@ Global
220 {E8A08E86-1780-4ED4-8F63-AB2B52C1C16B}.Release|x64.Build.0 = Release|Any CPU
221 {E8A08E86-1780-4ED4-8F63-AB2B52C1C16B}.Release|x86.ActiveCfg = Release|Any CPU
222 {E8A08E86-1780-4ED4-8F63-AB2B52C1C16B}.Release|x86.Build.0 = Release|Any CPU
225 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
226 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Debug|Any CPU.Build.0 = Debug|Any CPU
227 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
228 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Debug|ARM64.Build.0 = Debug|Any CPU
229 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Debug|x64.ActiveCfg = Debug|Any CPU
230 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Debug|x64.Build.0 = Debug|Any CPU
231 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Debug|x86.ActiveCfg = Debug|Any CPU
232 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Debug|x86.Build.0 = Debug|Any CPU
233 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Release|Any CPU.ActiveCfg = Release|Any CPU
234 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Release|Any CPU.Build.0 = Release|Any CPU
235 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Release|ARM64.ActiveCfg = Release|Any CPU
236 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Release|ARM64.Build.0 = Release|Any CPU
237 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Release|x64.ActiveCfg = Release|Any CPU
238 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Release|x64.Build.0 = Release|Any CPU
239 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Release|x86.ActiveCfg = Release|Any CPU
240 - {DF63F589-028E-45A1-A212-948FACF1FDCD}.Release|x86.Build.0 = Release|Any CPU
223 {853716DB-C02C-41BD-91BC-79CDC0C17D10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
224 {853716DB-C02C-41BD-91BC-79CDC0C17D10}.Debug|Any CPU.Build.0 = Debug|Any CPU
225 {853716DB-C02C-41BD-91BC-79CDC0C17D10}.Debug|ARM64.ActiveCfg = Debug|Any CPU
@@ -439,7 +421,6 @@ Global
421 {9DB36DB1-24A1-47A7-9E57-D48A2E33C13C} = {1284331E-BC6C-426D-AAAF-140C0174F875}
422 {C66C2503-C671-4230-8B48-1D93A8532A28} = {1284331E-BC6C-426D-AAAF-140C0174F875}
423 {E8A08E86-1780-4ED4-8F63-AB2B52C1C16B} = {1284331E-BC6C-426D-AAAF-140C0174F875}
442 - {DF63F589-028E-45A1-A212-948FACF1FDCD} = {1284331E-BC6C-426D-AAAF-140C0174F875}
424 {23FC60D7-B101-42F8-9786-DB7A9CD964A2} = {1284331E-BC6C-426D-AAAF-140C0174F875}
425 {C44BB95F-5020-4876-933C-B73A24C488FD} = {1284331E-BC6C-426D-AAAF-140C0174F875}
426 {93645356-5D5F-45DE-AC7F-252D35E1ACE5} = {1284331E-BC6C-426D-AAAF-140C0174F875}