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 @@ + + + + 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 + + + +