diff --git a/src/xunit.runner.utility/Utility/NetCoreAssemblyDependencyResolver.cs b/src/xunit.runner.utility/Utility/NetCoreAssemblyDependencyResolver.cs index 4e84bd7a3..5f0b2b4cc 100644 --- a/src/xunit.runner.utility/Utility/NetCoreAssemblyDependencyResolver.cs +++ b/src/xunit.runner.utility/Utility/NetCoreAssemblyDependencyResolver.cs @@ -26,7 +26,7 @@ public class NetCoreAssemblyDependencyResolver : IDisposable : RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? "unix" : "unknown"; - Dictionary assemblyFileNameToLibraryMap; + Dictionary> assemblyFileNameToLibraryMap; string assemblyFolder; ICompilationAssemblyResolver assemblyResolver; DependencyContext dependencyContext; @@ -69,9 +69,9 @@ void Initialize(Assembly assembly) dependencyContext.RuntimeLibraries .Where(lib => lib.RuntimeAssemblyGroups?.Count > 0) .Select(lib => Tuple.Create(lib, lib.RuntimeAssemblyGroups.FirstOrDefault(grp => grp.Runtime == CurrentRuntime || string.IsNullOrEmpty(grp.Runtime)))) - .Where(tuple => tuple.Item2 != null && tuple.Item2.AssetPaths != null) - .SelectMany(tuple => tuple.Item2.AssetPaths.Where(x => x != null).Select(path => Tuple.Create(tuple.Item1, Path.GetFileNameWithoutExtension(path)))) - .ToDictionaryIgnoringDuplicateKeys(tuple => tuple.Item2, tuple => tuple.Item1, StringComparer.OrdinalIgnoreCase); + .Where(tuple => tuple.Item2?.AssetPaths != null) + .SelectMany(tuple => tuple.Item2.AssetPaths.Where(x => x != null).Select(path => Tuple.Create(Path.GetFileNameWithoutExtension(path), Tuple.Create(tuple.Item1, tuple.Item2)))) + .ToDictionaryIgnoringDuplicateKeys(tuple => tuple.Item1, tuple => tuple.Item2, StringComparer.OrdinalIgnoreCase); assemblyResolver = new XunitPackageCompilationAssemblyResolver(); loadContext = AssemblyLoadContext.GetLoadContext(assembly); @@ -85,11 +85,12 @@ public void Dispose() Assembly OnResolving(AssemblyLoadContext context, AssemblyName name) { // Try to find dependency from .deps.json - if (assemblyFileNameToLibraryMap.TryGetValue(name.Name, out var library)) + if (assemblyFileNameToLibraryMap.TryGetValue(name.Name, out var libraryTuple)) { + var library = libraryTuple.Item1; + var assetGroup = libraryTuple.Item2; var wrapper = new CompilationLibrary(library.Type, library.Name, library.Version, library.Hash, - library.RuntimeAssemblyGroups.SelectMany(g => g.AssetPaths), - library.Dependencies, library.Serviceable); + assetGroup.AssetPaths, library.Dependencies, library.Serviceable); var assemblies = new List(); if (assemblyResolver.TryResolveAssemblyPaths(wrapper, assemblies)) diff --git a/test/test.harness/test.harness.csproj b/test/test.harness/test.harness.csproj index baf39bdc2..79e4d86ee 100644 --- a/test/test.harness/test.harness.csproj +++ b/test/test.harness/test.harness.csproj @@ -15,11 +15,41 @@ + + TextTemplatingFileGenerator + App.cs + + + TextTemplatingFileGenerator + launchSettings.cs + + + TextTemplatingFileGenerator + readme.cs + PreserveNewest + + True + True + App.config + + + True + True + launchSettings.json + + + True + True + readme.txt + + + +