From 13ed2f6f5c279f7e1f480a4db260a98fdd0b08f6 Mon Sep 17 00:00:00 2001 From: Brandon Ording Date: Fri, 5 Jun 2026 15:57:28 -0400 Subject: [PATCH 1/2] Add tests to check for mismatches in runtime assemblies --- .../DeploymentPackageTests.cs | 36 ++++++++++++++++++- ...ontrolInstaller.Packaging.UnitTests.csproj | 4 +++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/ServiceControlInstaller.Packaging.UnitTests/DeploymentPackageTests.cs b/src/ServiceControlInstaller.Packaging.UnitTests/DeploymentPackageTests.cs index b4fb53fd8e..9f6f19af1c 100644 --- a/src/ServiceControlInstaller.Packaging.UnitTests/DeploymentPackageTests.cs +++ b/src/ServiceControlInstaller.Packaging.UnitTests/DeploymentPackageTests.cs @@ -4,6 +4,8 @@ namespace Tests using System.Diagnostics; using System.IO; using System.Linq; + using System.Runtime.InteropServices; + using Microsoft.AspNetCore.Http; using NUnit.Framework; [TestFixtureSource(typeof(DeploymentPackage), nameof(DeploymentPackage.All))] @@ -30,7 +32,7 @@ public void CheckPackageStructure() } [Test] - public void DuplicateAssemblyShouldHaveMatchingVersions() + public void DuplicateAssembliesInDeploymentUnitsShouldHaveMatchingVersions() { var detectedMismatches = new List(); @@ -46,6 +48,38 @@ public void DuplicateAssemblyShouldHaveMatchingVersions() Assert.That(detectedMismatches, Is.Empty, $"Component assembly version mismatch detected"); } + [Test] + public void DuplicateAssembliesFromRuntimeShouldHaveMatchingVersions() + { + var detectedMismatches = new List(); + + var runtimeDirectory = new DirectoryInfo(RuntimeEnvironment.GetRuntimeDirectory()); + var runtimeDeploymentUnit = new DeploymentPackage.DeploymentUnit(runtimeDirectory, ".NET Runtime"); + + foreach (var deploymentUnit in deploymentPackage.DeploymentUnits) + { + detectedMismatches.AddRange(GetAssemblyMismatches(deploymentUnit, runtimeDeploymentUnit)); + } + + Assert.That(detectedMismatches, Is.Empty, $"Component assembly version mismatch detected"); + } + + [Test] + public void DuplicateAssembliesFromASPNetCoreShouldHaveMatchingVersions() + { + var detectedMismatches = new List(); + + var aspNetCoreDirectory = new DirectoryInfo(Path.GetDirectoryName(typeof(HttpResponse).Assembly.Location)); + var aspNetCoreDeploymentUnit = new DeploymentPackage.DeploymentUnit(aspNetCoreDirectory, "ASP.NET Core Runtime"); + + foreach (var deploymentUnit in deploymentPackage.DeploymentUnits) + { + detectedMismatches.AddRange(GetAssemblyMismatches(deploymentUnit, aspNetCoreDeploymentUnit)); + } + + Assert.That(detectedMismatches, Is.Empty, $"Component assembly version mismatch detected"); + } + IEnumerable GetAssemblyMismatches(DeploymentPackage.DeploymentUnit leftDeploymentUnit, DeploymentPackage.DeploymentUnit rightDeploymentUnit) { var detectedMismatches = new List(); diff --git a/src/ServiceControlInstaller.Packaging.UnitTests/ServiceControlInstaller.Packaging.UnitTests.csproj b/src/ServiceControlInstaller.Packaging.UnitTests/ServiceControlInstaller.Packaging.UnitTests.csproj index 76b172a166..be95909ae0 100644 --- a/src/ServiceControlInstaller.Packaging.UnitTests/ServiceControlInstaller.Packaging.UnitTests.csproj +++ b/src/ServiceControlInstaller.Packaging.UnitTests/ServiceControlInstaller.Packaging.UnitTests.csproj @@ -4,6 +4,10 @@ net10.0 + + + + From d72e04716ee020be82fa792e6eef0f4f49c33a4f Mon Sep 17 00:00:00 2001 From: Brandon Ording Date: Fri, 5 Jun 2026 16:06:32 -0400 Subject: [PATCH 2/2] Add packages to get tests passing --- src/Directory.Packages.props | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index b1bcf44222..3801670993 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -85,8 +85,12 @@ + + + +