diff --git a/src/Microsoft.Extensions.DependencyModel/DependencyContext.cs b/src/Microsoft.Extensions.DependencyModel/DependencyContext.cs index 4999ba9c3..32202c993 100644 --- a/src/Microsoft.Extensions.DependencyModel/DependencyContext.cs +++ b/src/Microsoft.Extensions.DependencyModel/DependencyContext.cs @@ -88,12 +88,12 @@ namespace Microsoft.Extensions.DependencyModel { public bool Equals(T x, T y) { - return string.Equals(x.Name, y.Name, StringComparison.Ordinal); + return StringComparer.OrdinalIgnoreCase.Equals(x.Name, y.Name); } public int GetHashCode(T obj) { - return obj.Name.GetHashCode(); + return StringComparer.OrdinalIgnoreCase.GetHashCode(obj.Name); } } } diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs index 8ff49175a..774129043 100644 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs +++ b/src/Microsoft.Extensions.DependencyModel/Resolution/AppBaseCompilationAssemblyResolver.cs @@ -40,7 +40,9 @@ namespace Microsoft.Extensions.DependencyModel.Resolution public bool TryResolveAssemblyPaths(CompilationLibrary library, List assemblies) { - var isProject = string.Equals(library.Type, "project", StringComparison.OrdinalIgnoreCase); + var isProject = string.Equals(library.Type, "project", StringComparison.OrdinalIgnoreCase) || + string.Equals(library.Type, "msbuildproject", StringComparison.OrdinalIgnoreCase); + var isPackage = string.Equals(library.Type, "package", StringComparison.OrdinalIgnoreCase); if (!isProject && !isPackage && diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/AppBaseResolverTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/AppBaseResolverTests.cs index 382b7f329..c3fd2558e 100644 --- a/test/Microsoft.Extensions.DependencyModel.Tests/AppBaseResolverTests.cs +++ b/test/Microsoft.Extensions.DependencyModel.Tests/AppBaseResolverTests.cs @@ -39,6 +39,23 @@ namespace Microsoft.Extensions.DependencyModel.Tests Assert.True(result); } + [Fact] + public void ResolvesMsBuildProjectType() + { + var fileSystem = FileSystemMockBuilder + .Create() + .AddFiles(BasePathRefs, TestLibraryFactory.DefaultAssembly) + .Build(); + var resolver = CreateResolver(fileSystem); + var library = TestLibraryFactory.Create( + TestLibraryFactory.MsBuildProjectType, + assemblies: TestLibraryFactory.EmptyAssemblies); + + var result = resolver.TryResolveAssemblyPaths(library, null); + + Assert.True(result); + } + [Fact] public void ResolvesPackageType() { diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextLoaderTests.cs b/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextLoaderTests.cs index 76f819878..1c8e07535 100644 --- a/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextLoaderTests.cs +++ b/test/Microsoft.Extensions.DependencyModel.Tests/DependencyContextLoaderTests.cs @@ -69,6 +69,56 @@ namespace Microsoft.Extensions.DependencyModel.Tests }); } + [Fact] + public void MergeMergesLibrariesWithDifferentCasing() + { + var compilationLibraries = new[] + { + CreateCompilation("PaCkAgEA"), + }; + + var runtimeLibraries = new[] + { + CreateRuntime("PaCkAgEA"), + }; + + var compilationLibrariesRedist = new[] + { + CreateCompilation("PackageA"), + }; + + var runtimeLibrariesRedist = new[] + { + CreateRuntime("PackageA"), + }; + + var context = new DependencyContext( + CreateTargetInfo(), + CompilationOptions.Default, + compilationLibraries, + runtimeLibraries, + new RuntimeFallbacks[] { }); + + var contextRedist = new DependencyContext( + CreateTargetInfo(), + CompilationOptions.Default, + compilationLibrariesRedist, + runtimeLibrariesRedist, + new RuntimeFallbacks[] { }); + + var result = context.Merge(contextRedist); + + result.CompileLibraries.Should().BeEquivalentTo(new[] + { + compilationLibraries[0] + }); + + result.RuntimeLibraries.Should().BeEquivalentTo(new[] + { + runtimeLibraries[0] + }); + } + public void MergeMergesRuntimeGraph() { var context = new DependencyContext( diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/TestLibraryFactory.cs b/test/Microsoft.Extensions.DependencyModel.Tests/TestLibraryFactory.cs index 9e81d4bc1..a944ed309 100644 --- a/test/Microsoft.Extensions.DependencyModel.Tests/TestLibraryFactory.cs +++ b/test/Microsoft.Extensions.DependencyModel.Tests/TestLibraryFactory.cs @@ -26,6 +26,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests public static readonly string DefaultHash = DefaultHashAlgoritm + "-" + DefaultHashValue; public static readonly string ProjectType = "project"; + public static readonly string MsBuildProjectType = "msbuildproject"; public static readonly string ReferenceAssemblyType = "referenceassembly"; public static readonly string PackageType = "package";