diff --git a/eng/Versions.props b/eng/Versions.props index 77edb6e9b5f..22de12d61cc 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -2,7 +2,7 @@ - 17.1.0release + 17.1.1release 15.1.0.0 preview true diff --git a/src/Shared/CoreCLRAssemblyLoader.cs b/src/Shared/CoreCLRAssemblyLoader.cs index cd02dba6528..f1b1bdf0385 100644 --- a/src/Shared/CoreCLRAssemblyLoader.cs +++ b/src/Shared/CoreCLRAssemblyLoader.cs @@ -165,10 +165,12 @@ private Assembly TryResolveAssemblyFromPaths(AssemblyLoadContext context, Assemb } AssemblyName candidateAssemblyName = AssemblyLoadContext.GetAssemblyName(candidatePath); - if (candidateAssemblyName.Version >= assemblyName.Version) + if (candidateAssemblyName.Version != assemblyName.Version) { - return LoadAndCache(context, candidatePath); + continue; } + + return LoadAndCache(context, candidatePath); } } diff --git a/src/Shared/MSBuildLoadContext.cs b/src/Shared/MSBuildLoadContext.cs index 7e3842bbbbd..1de3e06bced 100644 --- a/src/Shared/MSBuildLoadContext.cs +++ b/src/Shared/MSBuildLoadContext.cs @@ -53,20 +53,22 @@ public MSBuildLoadContext(string assemblyPath) // bare search directory if that fails. : new[] { assemblyName.CultureName, string.Empty }) { - var candidatePath = Path.Combine(_directory, - cultureSubfolder, - $"{assemblyName.Name}.dll"); + var candidatePath = Path.Combine(_directory, + cultureSubfolder, + $"{assemblyName.Name}.dll"); - if (!FileSystems.Default.FileExists(candidatePath)) - { - continue; - } + if (!FileSystems.Default.FileExists(candidatePath)) + { + continue; + } + + AssemblyName candidateAssemblyName = AssemblyLoadContext.GetAssemblyName(candidatePath); + if (candidateAssemblyName.Version != assemblyName.Version) + { + continue; + } - AssemblyName candidateAssemblyName = AssemblyLoadContext.GetAssemblyName(candidatePath); - if (candidateAssemblyName.Version >= assemblyName.Version) - { return LoadFromAssemblyPath(candidatePath); - } } // If the Assembly is provided via a file path, the following rules are used to load the assembly: