diff --git a/eng/Versions.props b/eng/Versions.props
index 99601a6d08c8..214bccf413c9 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -272,7 +272,6 @@
10.0.0-preview.4.25210.1
- 2.2.0-beta.19072.10
10.0.0-preview.24602.1
diff --git a/src/SourceBuild/content/Directory.Packages.props b/src/SourceBuild/content/Directory.Packages.props
index 28b7331b6d7f..771606b53cd0 100644
--- a/src/SourceBuild/content/Directory.Packages.props
+++ b/src/SourceBuild/content/Directory.Packages.props
@@ -9,7 +9,8 @@
-
+
+
diff --git a/src/SourceBuild/content/eng/Version.Details.xml b/src/SourceBuild/content/eng/Version.Details.xml
index 28c92659c573..c2d5068abb46 100644
--- a/src/SourceBuild/content/eng/Version.Details.xml
+++ b/src/SourceBuild/content/eng/Version.Details.xml
@@ -6,7 +6,11 @@
https://github.com/dotnet/arcade
3fddad170a95109a19a1fee78a83a87cd2e2bb79
-
+
+ https://github.com/dotnet/arcade
+ 3fddad170a95109a19a1fee78a83a87cd2e2bb79
+
+
https://github.com/dotnet/arcade
3fddad170a95109a19a1fee78a83a87cd2e2bb79
diff --git a/src/SourceBuild/content/eng/Versions.props b/src/SourceBuild/content/eng/Versions.props
index 99cea19ffe89..e2cc9ad9103a 100644
--- a/src/SourceBuild/content/eng/Versions.props
+++ b/src/SourceBuild/content/eng/Versions.props
@@ -26,7 +26,8 @@
10.0.100-preview.4.25203.1
10.0.100-preview.4.25203.1
- 10.0.0-beta.25110.3
+ 10.0.0-beta.25202.1
+ 10.0.0-beta.25202.1
2.0.0-beta4.24126.1
diff --git a/src/SourceBuild/content/eng/merge-asset-manifests.proj b/src/SourceBuild/content/eng/merge-asset-manifests.proj
index 2ad3cf576d2b..38cdf0710fed 100644
--- a/src/SourceBuild/content/eng/merge-asset-manifests.proj
+++ b/src/SourceBuild/content/eng/merge-asset-manifests.proj
@@ -17,11 +17,9 @@
-
diff --git a/src/SourceBuild/content/eng/tools/BuildComparer/BuildComparer.csproj b/src/SourceBuild/content/eng/tools/BuildComparer/BuildComparer.csproj
index 1cfd60e535ef..3eb8301bd4ec 100644
--- a/src/SourceBuild/content/eng/tools/BuildComparer/BuildComparer.csproj
+++ b/src/SourceBuild/content/eng/tools/BuildComparer/BuildComparer.csproj
@@ -7,7 +7,8 @@
-
+
+
diff --git a/src/SourceBuild/content/eng/tools/BuildComparer/Program.cs b/src/SourceBuild/content/eng/tools/BuildComparer/Program.cs
index 4c5f938173e8..0a96fdac09e1 100644
--- a/src/SourceBuild/content/eng/tools/BuildComparer/Program.cs
+++ b/src/SourceBuild/content/eng/tools/BuildComparer/Program.cs
@@ -1,5 +1,5 @@
-using Microsoft.DotNet.VersionTools.Automation;
-using Microsoft.DotNet.VersionTools.BuildManifest;
+using Microsoft.Arcade.Common;
+using Microsoft.DotNet.Build.Manifest;
using NuGet.Packaging;
using System.Collections.Concurrent;
using System.Collections.Immutable;
diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/GetKnownArtifactsFromAssetManifests.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/GetKnownArtifactsFromAssetManifests.cs
index 9756d4efdafc..db1e4096c6d2 100644
--- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/GetKnownArtifactsFromAssetManifests.cs
+++ b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/GetKnownArtifactsFromAssetManifests.cs
@@ -15,7 +15,7 @@ namespace Microsoft.DotNet.UnifiedBuild.Tasks;
///
/// Get a list of MSBuild Items that represent the packages described in the asset manifests.
///
-public sealed class GetKnownArtifactsFromAssetManifests : Build.Utilities.Task
+public sealed class GetKnownArtifactsFromAssetManifests : Task
{
// Common metadata
private const string IdAttributeName = "Id";
diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/MergeAssetManifests.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/MergeAssetManifests.cs
index 5c6f9e97fe01..a87e5638a52d 100644
--- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/MergeAssetManifests.cs
+++ b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/MergeAssetManifests.cs
@@ -2,17 +2,17 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
-using Microsoft.Build.Utilities;
+using Microsoft.Arcade.Common;
using Microsoft.Build.Framework;
+using Microsoft.DotNet.Build.Manifest;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection.Extensions;
using System;
-using System.Collections.Generic;
-using System.IO;
using System.Linq;
-using System.Xml.Linq;
namespace Microsoft.DotNet.UnifiedBuild.Tasks
{
- public class MergeAssetManifests : Task
+ public class MergeAssetManifests : MSBuildTaskBase
{
///
/// AssetManifest paths
@@ -26,97 +26,67 @@ public class MergeAssetManifests : Task
[Required]
public required string MergedAssetManifestOutputPath { get; init; }
- ///
- /// Azure DevOps build number
- ///
- public string VmrBuildNumber { get; set; } = string.Empty;
-
///
/// Vmr Vertical Name, e.g. "Android_Shortstack_arm". Allowed to be empty for non official builds.
///
public string VerticalName { get; set; } = string.Empty;
- private static readonly string _buildIdAttribute = "BuildId";
private static readonly string _verticalNameAttribute = "VerticalName";
- private static readonly string _azureDevOpsBuildNumberAttribute = "AzureDevOpsBuildNumber";
- private static readonly string[] _ignoredAttributes = [
- _buildIdAttribute,
- _azureDevOpsBuildNumberAttribute,
- "IsReleaseOnlyPackageVersion",
- "IsStable"
- ];
-
- public override bool Execute()
- {
- List assetManifestXmls = AssetManifest.Select(xmlPath => XDocument.Load(xmlPath.ItemSpec)).ToList();
-
- VerifyAssetManifests(assetManifestXmls);
-
- XElement mergedManifestRoot = assetManifestXmls.First().Root
- ?? throw new ArgumentException("The root element of the asset manifest is null.");
-
- // Set the BuildId and AzureDevOpsBuildNumber attributes to the value of VmrBuildNumber
- mergedManifestRoot.SetAttributeValue(_buildIdAttribute, VmrBuildNumber);
- mergedManifestRoot.SetAttributeValue(_azureDevOpsBuildNumberAttribute, VmrBuildNumber);
- mergedManifestRoot.SetAttributeValue(_verticalNameAttribute, VerticalName);
- List packageElements = new();
- List blobElements = new();
+ private IBuildModelFactory? _buildModelFactory;
+ private IFileSystem? _fileSystem;
- foreach (var assetManifestXml in assetManifestXmls)
- {
- // We may encounter assets here with "Vertical", "Internal", or "External" visibility here.
- // We filter out "Vertical" visibility assets here, as they are not needed in the merged manifest.
- // We leave in "Internal" assets so they can be used in later build passes.
- // We leave in "External" assets as we will eventually ship them.
- packageElements.AddRange(assetManifestXml.Descendants("Package").Where(package => package.Attribute("Visibility")?.Value != "Vertical"));
- blobElements.AddRange(assetManifestXml.Descendants("Blob").Where(blob => blob.Attribute("Visibility")?.Value != "Vertical"));
- }
-
- packageElements = packageElements.OrderBy(packageElement => packageElement.Attribute("Id")?.Value).ToList();
- blobElements = blobElements.OrderBy(blobElement => blobElement.Attribute("Id")?.Value).ToList();
-
- XDocument verticalManifest = new(new XElement(mergedManifestRoot.Name, mergedManifestRoot.Attributes(), packageElements, blobElements));
-
- FileInfo outputFileInfo = new(MergedAssetManifestOutputPath);
- outputFileInfo.Directory!.Create();
- File.WriteAllText(outputFileInfo.FullName, verticalManifest.ToString());
+ public override void ConfigureServices(IServiceCollection collection)
+ {
+ collection.TryAddSingleton();
+ collection.TryAddSingleton();
+ collection.TryAddSingleton();
+ collection.TryAddSingleton();
+ collection.TryAddSingleton();
+ collection.TryAddSingleton();
+ collection.TryAddSingleton();
+ collection.TryAddSingleton(Log);
+ }
- Log.LogMessage(MessageImportance.High, $"Merged asset manifest written to {MergedAssetManifestOutputPath}");
+ public bool ExecuteTask(IBuildModelFactory buildModelFactory,
+ IFileSystem fileSystem)
+ {
+ _buildModelFactory = buildModelFactory;
+ _fileSystem = fileSystem;
+ MergeManifests();
return !Log.HasLoggedErrors;
}
- private static void VerifyAssetManifests(IReadOnlyList assetManifestXmls)
+ public void MergeManifests()
{
- if (assetManifestXmls.Count == 0)
+ if (_buildModelFactory == null)
{
- throw new ArgumentException("No asset manifests were provided.");
+ throw new InvalidOperationException("BuildModelFactory is not initialized.");
}
- HashSet rootAttributes = assetManifestXmls
- .First()
- .Root?
- .Attributes()
- .Select(attribute => attribute.ToString())
- .ToHashSet()
- ?? throw new ArgumentException("The root element of the asset manifest is null.");
-
- if (assetManifestXmls.Skip(1).Any(manifest => manifest.Root?.Attributes().Count() != rootAttributes.Count))
+ if (_fileSystem == null)
{
- throw new ArgumentException("The asset manifests do not have the same number of root attributes.");
+ throw new InvalidOperationException("FileSystem is not initialized.");
}
- if (assetManifestXmls.Skip(1).Any(assetManifestXml =>
- !assetManifestXml.Root?.Attributes().Select(attribute => attribute.ToString())
- .All(attribute =>
- // Ignore BuildId and AzureDevOpsBuildNumber attributes, they're different for different repos,
- // TODO this should be fixed with https://github.com/dotnet/source-build/issues/3934
- _ignoredAttributes.Any(ignoredAttribute => attribute.StartsWith(ignoredAttribute)) || rootAttributes.Contains(attribute))
- ?? false))
- {
- throw new ArgumentException("The asset manifests do not have the same root attributes.");
- }
+ var assetManifestModels = AssetManifest.Select(xmlPath => _buildModelFactory.ManifestFileToModel(xmlPath.ItemSpec))
+ .ToList();
+
+ // We may encounter assets here with "Vertical", "Internal", or "External" visibility here.
+ // We filter out "Vertical" visibility assets here, as they are not needed in the merged manifest.
+ // We leave in "Internal" assets so they can be used in later build passes.
+ // We leave in "External" assets as we will eventually ship them.
+
+ var mergedManifest = _buildModelFactory.CreateMergedModel(assetManifestModels, ArtifactVisibility.Internal | ArtifactVisibility.External);
+
+ // Add a vertical name in the merged model's build identity
+ mergedManifest.Identity.Attributes.Add(_verticalNameAttribute, VerticalName);
+
+ _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(MergedAssetManifestOutputPath)!);
+ _fileSystem.WriteToFile(MergedAssetManifestOutputPath, mergedManifest.ToXml().ToString());
+
+ Log.LogMessage(MessageImportance.High, $"Merged asset manifest written to {MergedAssetManifestOutputPath}");
}
}
}
diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/Microsoft.DotNet.UnifiedBuild.Tasks.csproj b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/Microsoft.DotNet.UnifiedBuild.Tasks.csproj
index cc80e5e5db08..6f706a753101 100644
--- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/Microsoft.DotNet.UnifiedBuild.Tasks.csproj
+++ b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/Microsoft.DotNet.UnifiedBuild.Tasks.csproj
@@ -1,7 +1,8 @@
- $(NetCurrent)
+ $(NetCurrent)
+ true
@@ -13,4 +14,10 @@
+
+
+
+
+
+
diff --git a/src/SourceBuild/content/repo-projects/Directory.Build.props b/src/SourceBuild/content/repo-projects/Directory.Build.props
index 5cc4a9a1f90e..16320e84f88d 100644
--- a/src/SourceBuild/content/repo-projects/Directory.Build.props
+++ b/src/SourceBuild/content/repo-projects/Directory.Build.props
@@ -140,6 +140,8 @@
https://github.com/dotnet/dotnet
$(BuildArgs) /p:RepositoryUrl=$(DotNetRepositoryUrl)
+
+ $(BuildArgs) /p:PublishingVersion=4
$(BuildArgs) /p:SourceBuiltSymbolsDir=$(IntermediateSymbolsRepoDir)
diff --git a/src/SourceBuild/content/repo-projects/Directory.Build.targets b/src/SourceBuild/content/repo-projects/Directory.Build.targets
index 807ac3b76642..f425c6fd8a50 100644
--- a/src/SourceBuild/content/repo-projects/Directory.Build.targets
+++ b/src/SourceBuild/content/repo-projects/Directory.Build.targets
@@ -666,6 +666,7 @@
Exists('$(RepoArtifactsDir)')">
+
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/AssetsLoader.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/AssetsLoader.cs
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/AssetsLoader.cs
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/AssetsLoader.cs
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/JoinVerticalsTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/JoinVerticalsTests.cs
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/JoinVerticalsTests.cs
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/JoinVerticalsTests.cs
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/MergeAssetManifestsTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/MergeAssetManifestsTests.cs
new file mode 100644
index 000000000000..3c3da1fc24ad
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/MergeAssetManifestsTests.cs
@@ -0,0 +1,69 @@
+using Microsoft.Build.Utilities;
+using Microsoft.DotNet.UnifiedBuild.Tasks;
+using Microsoft.DotNet.UnifiedBuild.Tasks.ManifestAssets;
+using NuGet.ContentModel;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Xml.Linq;
+using Xunit;
+using Xunit.Abstractions;
+using static System.Net.Mime.MediaTypeNames;
+
+namespace Microsoft.DotNet.Tests
+{
+ ///
+ /// Tests for the MergeAssetManifests task. This task is used to join the repo builds in a single vertical
+ ///
+ [Trait("Category", "MergeAssetManifests")]
+ public class MergeAssetManifestsTests
+ {
+ private const string manifestsBasePath = "MergeAssetManifestsTests";
+
+ [Theory]
+ [InlineData("manifests1")]
+ [InlineData("manifests2")]
+ [InlineData("manifests3")]
+ public static void MergeManifestCheck(string manifestSet)
+ {
+ // Load all manifests in the manifests2 directory
+ var manifestPaths = Directory.EnumerateFiles(AssetsLoader.GetAssetFullPath(Path.Combine(manifestsBasePath, manifestSet)), "*.xml")
+ .Where(p => Path.GetFileName(p) != "expected.xml")
+ .Select(p => Path.Combine(manifestsBasePath, manifestSet, p))
+ .ToList();
+ string expectedPath = AssetsLoader.GetAssetFullPath(Path.Combine(manifestsBasePath, manifestSet, "expected.xml"));
+
+ // Create a temporary file to write the merged manifest
+
+ string tempFile = Path.Combine(Path.GetTempFileName());
+
+ try
+ {
+ var task = new MergeAssetManifests
+ {
+ AssetManifest = manifestPaths.Select(p => new TaskItem(AssetsLoader.GetAssetFullPath(p))).ToArray(),
+ VerticalName = "Windows_x64",
+ MergedAssetManifestOutputPath = tempFile,
+ BuildEngine = new MockBuildEngine()
+ };
+
+ task.Execute();
+
+ Assert.False(task.Log.HasLoggedErrors);
+
+ // Load the merged manifest xml and compare to the expected output.
+ var mergedManifest = XDocument.Load(tempFile);
+ var expectedManifest = XDocument.Load(AssetsLoader.GetAssetFullPath(expectedPath));
+ Assert.Equal(expectedManifest.ToString(), mergedManifest.ToString());
+ }
+ finally
+ {
+ // Clean up the temporary file
+ if (File.Exists(tempFile))
+ {
+ File.Delete(tempFile);
+ }
+ }
+ }
+ }
+}
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/Microsoft.DotNet.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/Microsoft.DotNet.UnifiedBuild.Tasks.Tests.csproj
similarity index 89%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/Microsoft.DotNet.Tests.csproj
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/Microsoft.DotNet.UnifiedBuild.Tasks.Tests.csproj
index 6f6b01169ebc..1eddcd915e07 100644
--- a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/Microsoft.DotNet.Tests.csproj
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/Microsoft.DotNet.UnifiedBuild.Tasks.Tests.csproj
@@ -19,11 +19,10 @@
-
+
-
+
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/MockBuildEngine.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/MockBuildEngine.cs
new file mode 100644
index 000000000000..c9976cffc26f
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/MockBuildEngine.cs
@@ -0,0 +1,51 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using Microsoft.Build.Framework;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace Microsoft.DotNet.Tests
+{
+ public class MockBuildEngine : IBuildEngine
+ {
+ public bool ContinueOnError => throw new NotImplementedException();
+
+ public int LineNumberOfTaskNode => 0;
+
+ public int ColumnNumberOfTaskNode => 0;
+
+ public string ProjectFileOfTaskNode => "Fake File";
+
+ public List CustomBuildEvents = new List();
+ public List BuildErrorEvents = new List();
+ public List BuildMessageEvents = new List();
+ public List BuildWarningEvents = new List();
+
+ public bool BuildProjectFile(string projectFileName, string[] targetNames, IDictionary globalProperties, IDictionary targetOutputs)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void LogCustomEvent(CustomBuildEventArgs e)
+ {
+ CustomBuildEvents.Add(e);
+ }
+
+ public void LogErrorEvent(BuildErrorEventArgs e)
+ {
+ BuildErrorEvents.Add(e);
+ }
+
+ public void LogMessageEvent(BuildMessageEventArgs e)
+ {
+ BuildMessageEvents.Add(e);
+ }
+
+ public void LogWarningEvent(BuildWarningEventArgs e)
+ {
+ BuildWarningEvents.Add(e);
+ }
+ }
+}
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/PackageSourceMappingsTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/PackageSourceMappingsTests.cs
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/PackageSourceMappingsTests.cs
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/PackageSourceMappingsTests.cs
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x86.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x86.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x86.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Android_Shortstack_x86.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Alpine_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_Pgo_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/AzureLinux_x64_Cross_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Multithreaded_Shortstack_wasm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Multithreaded_Shortstack_wasm.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Multithreaded_Shortstack_wasm.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Multithreaded_Shortstack_wasm.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Shortstack_wasm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Shortstack_wasm.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Shortstack_wasm.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Browser_Shortstack_wasm.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/LinuxBionic_Shortstack_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/MacCatalyst_Shortstack_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_Shortstack_Mono_LLVMAOT_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_Shortstack_Mono_LLVMAOT_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_Shortstack_Mono_LLVMAOT_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_Shortstack_Mono_LLVMAOT_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/OSX_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Wasi_Shortstack_wasm.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Wasi_Shortstack_wasm.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Wasi_Shortstack_wasm.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Wasi_Shortstack_wasm.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x86.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x86.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x86.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_Pgo_x86.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64_BuildPass2.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64_BuildPass2.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64_BuildPass2.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x64_BuildPass2.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86_BuildPass2.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86_BuildPass2.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86_BuildPass2.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/Windows_x86_BuildPass2.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/iOSSimulator_Shortstack_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOS_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/iOS_Shortstack_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/iOS_Shortstack_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/iOS_Shortstack_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_x64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_x64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_x64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOSSimulator_Shortstack_x64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOS_Shortstack_arm64.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOS_Shortstack_arm64.xml
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOS_Shortstack_arm64.xml
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/JoinVerticalsTests/manifests/verticals/tvOS_Shortstack_arm64.xml
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests1/expected.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests1/expected.xml
new file mode 100644
index 000000000000..87fd8d69066a
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests1/expected.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests1/fsharp.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests1/fsharp.xml
new file mode 100644
index 000000000000..246465644eee
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests1/fsharp.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests1/xdt.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests1/xdt.xml
new file mode 100644
index 000000000000..c409498ebd00
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests1/xdt.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/arcade.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/arcade.xml
new file mode 100644
index 000000000000..5815cb71279d
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/arcade.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/aspire.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/aspire.xml
new file mode 100644
index 000000000000..e90de774e0bc
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/aspire.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/aspnetcore.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/aspnetcore.xml
new file mode 100644
index 000000000000..9d7b0e5d92e9
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/aspnetcore.xml
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/cecil.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/cecil.xml
new file mode 100644
index 000000000000..5826cf8255aa
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/cecil.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/command-line-api.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/command-line-api.xml
new file mode 100644
index 000000000000..9e87687a7549
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/command-line-api.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/deployment-tools.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/deployment-tools.xml
new file mode 100644
index 000000000000..2365000ed146
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/deployment-tools.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/diagnostics.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/diagnostics.xml
new file mode 100644
index 000000000000..a2e09e86e7e2
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/diagnostics.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/efcore.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/efcore.xml
new file mode 100644
index 000000000000..8e2df584cdd3
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/efcore.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/emsdk.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/emsdk.xml
new file mode 100644
index 000000000000..6157c79472e3
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/emsdk.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/expected.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/expected.xml
new file mode 100644
index 000000000000..1a1711644bb8
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/expected.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/fsharp.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/fsharp.xml
new file mode 100644
index 000000000000..ed8ca230a670
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/fsharp.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/msbuild.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/msbuild.xml
new file mode 100644
index 000000000000..052ff216e2ec
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/msbuild.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/nuget-client.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/nuget-client.xml
new file mode 100644
index 000000000000..daff4f7b6e70
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/nuget-client.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/razor.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/razor.xml
new file mode 100644
index 000000000000..7575362c47aa
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/razor.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/roslyn-analyzers.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/roslyn-analyzers.xml
new file mode 100644
index 000000000000..4ef38b861316
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/roslyn-analyzers.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/roslyn.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/roslyn.xml
new file mode 100644
index 000000000000..b1ae4dde38f4
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/roslyn.xml
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/runtime.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/runtime.xml
new file mode 100644
index 000000000000..ecd3c52798d3
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/runtime.xml
@@ -0,0 +1,1198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/sdk.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/sdk.xml
new file mode 100644
index 000000000000..41e766e1821c
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/sdk.xml
@@ -0,0 +1,256 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/sourcelink.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/sourcelink.xml
new file mode 100644
index 000000000000..0a08b16eef50
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/sourcelink.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/symreader.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/symreader.xml
new file mode 100644
index 000000000000..570d5bfe6154
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/symreader.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/templating.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/templating.xml
new file mode 100644
index 000000000000..75804deb6d65
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/templating.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/vstest.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/vstest.xml
new file mode 100644
index 000000000000..e4fdd6196b71
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/vstest.xml
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/windowsdesktop.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/windowsdesktop.xml
new file mode 100644
index 000000000000..cbe836b1c127
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/windowsdesktop.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/winforms.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/winforms.xml
new file mode 100644
index 000000000000..5b74f4b00336
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/winforms.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/wpf.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/wpf.xml
new file mode 100644
index 000000000000..0117511405bc
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/wpf.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/xdt.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/xdt.xml
new file mode 100644
index 000000000000..8bacbde595bb
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests2/xdt.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/arcade.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/arcade.xml
new file mode 100644
index 000000000000..a04dbffa175b
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/arcade.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/aspire.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/aspire.xml
new file mode 100644
index 000000000000..6852f1dd00ae
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/aspire.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/aspnetcore.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/aspnetcore.xml
new file mode 100644
index 000000000000..ac151373d128
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/aspnetcore.xml
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/cecil.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/cecil.xml
new file mode 100644
index 000000000000..5f2d81cbbd8a
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/cecil.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/command-line-api.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/command-line-api.xml
new file mode 100644
index 000000000000..fe7709573ba6
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/command-line-api.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/deployment-tools.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/deployment-tools.xml
new file mode 100644
index 000000000000..8985b14904dc
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/deployment-tools.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/diagnostics.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/diagnostics.xml
new file mode 100644
index 000000000000..8047556d3839
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/diagnostics.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/efcore.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/efcore.xml
new file mode 100644
index 000000000000..418cb912e636
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/efcore.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/emsdk.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/emsdk.xml
new file mode 100644
index 000000000000..821d01b64260
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/emsdk.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/expected.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/expected.xml
new file mode 100644
index 000000000000..b98402617125
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/expected.xml
@@ -0,0 +1,2670 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/fsharp.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/fsharp.xml
new file mode 100644
index 000000000000..246465644eee
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/fsharp.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/msbuild.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/msbuild.xml
new file mode 100644
index 000000000000..2ddc43322108
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/msbuild.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/nuget-client.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/nuget-client.xml
new file mode 100644
index 000000000000..da5ee7732350
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/nuget-client.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/razor.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/razor.xml
new file mode 100644
index 000000000000..efc17bbe651d
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/razor.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/roslyn-analyzers.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/roslyn-analyzers.xml
new file mode 100644
index 000000000000..d0ff92d9133e
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/roslyn-analyzers.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/roslyn.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/roslyn.xml
new file mode 100644
index 000000000000..85098e54ed58
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/roslyn.xml
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/runtime.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/runtime.xml
new file mode 100644
index 000000000000..528917341e16
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/runtime.xml
@@ -0,0 +1,1214 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/scenario-tests.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/scenario-tests.xml
new file mode 100644
index 000000000000..3033997dde5c
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/scenario-tests.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/sdk.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/sdk.xml
new file mode 100644
index 000000000000..66348f3e58e5
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/sdk.xml
@@ -0,0 +1,284 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/sourcelink.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/sourcelink.xml
new file mode 100644
index 000000000000..2215121b60ec
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/sourcelink.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/symreader.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/symreader.xml
new file mode 100644
index 000000000000..f35f8cd1bc93
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/symreader.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/templating.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/templating.xml
new file mode 100644
index 000000000000..2e8295f6013c
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/templating.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/vstest.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/vstest.xml
new file mode 100644
index 000000000000..0ae85a1260c3
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/vstest.xml
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/windowsdesktop.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/windowsdesktop.xml
new file mode 100644
index 000000000000..43345cf9cbf8
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/windowsdesktop.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/winforms.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/winforms.xml
new file mode 100644
index 000000000000..308616cfa9c5
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/winforms.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/wpf.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/wpf.xml
new file mode 100644
index 000000000000..483e9cc5a8d2
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/wpf.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/xdt.xml b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/xdt.xml
new file mode 100644
index 000000000000..c409498ebd00
--- /dev/null
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/MergeAssetManifestsTests/manifests3/xdt.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-mappings-offline.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-mappings-offline.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-mappings-offline.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-mappings-offline.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-mappings-online.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-mappings-online.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-mappings-online.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-mappings-online.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-nomappings-offline.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-nomappings-offline.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-nomappings-offline.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-nomappings-offline.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-nomappings-online.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-nomappings-online.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-nomappings-online.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-nomappings-online.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-sbrp-offline.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-sbrp-offline.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-sbrp-offline.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-sbrp-offline.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-sbrp-online.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-sbrp-online.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/sb-sbrp-online.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/sb-sbrp-online.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/ub-mappings-nolocal.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/ub-mappings-nolocal.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/ub-mappings-nolocal.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/ub-mappings-nolocal.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/ub-mappings.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/ub-mappings.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/ub-mappings.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/ub-mappings.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/ub-nomappings.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/ub-nomappings.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/expected/ub-nomappings.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/expected/ub-nomappings.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-mappings-offline.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-mappings-offline.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-mappings-offline.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-mappings-offline.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-mappings-online.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-mappings-online.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-mappings-online.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-mappings-online.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-nomappings-offline.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-nomappings-offline.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-nomappings-offline.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-nomappings-offline.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-nomappings-online.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-nomappings-online.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-nomappings-online.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-nomappings-online.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-sbrp-offline.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-sbrp-offline.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-sbrp-offline.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-sbrp-offline.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-sbrp-online.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-sbrp-online.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/sb-sbrp-online.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/sb-sbrp-online.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/ub-mappings-nolocal.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/ub-mappings-nolocal.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/ub-mappings-nolocal.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/ub-mappings-nolocal.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/ub-mappings.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/ub-mappings.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/ub-mappings.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/ub-mappings.config
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/ub-nomappings.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/ub-nomappings.config
similarity index 100%
rename from src/SourceBuild/content/test/Microsoft.DotNet.Tests/assets/PackageSourceMappingsTests/original/ub-nomappings.config
rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tasks.Tests/assets/PackageSourceMappingsTests/original/ub-nomappings.config
diff --git a/src/SourceBuild/content/test/tests.proj b/src/SourceBuild/content/test/tests.proj
index 234d741ad3db..c77ee8b6ca33 100644
--- a/src/SourceBuild/content/test/tests.proj
+++ b/src/SourceBuild/content/test/tests.proj
@@ -21,8 +21,8 @@
-
-
+
+