Skip to content

Commit

Permalink
Merge pull request #735 from sharwell/winmd
Browse files Browse the repository at this point in the history
Support .exe and .winmd assembly extensions
  • Loading branch information
sharwell authored Feb 23, 2021
2 parents cc4f088 + 4683648 commit c69d641
Showing 1 changed file with 25 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,9 @@ await PackageExtractor.ExtractPackageAsync(
var nearestRefItems = refItems.Single(x => x.TargetFramework == nearestRef);
foreach (var item in nearestRefItems.Items)
{
if (!string.Equals(Path.GetExtension(item), ".dll", StringComparison.OrdinalIgnoreCase))
if (!string.Equals(Path.GetExtension(item), ".dll", StringComparison.OrdinalIgnoreCase)
&& !string.Equals(Path.GetExtension(item), ".exe", StringComparison.OrdinalIgnoreCase)
&& !string.Equals(Path.GetExtension(item), ".winmd", StringComparison.OrdinalIgnoreCase))
{
continue;
}
Expand All @@ -384,7 +386,9 @@ await PackageExtractor.ExtractPackageAsync(
var nearestLibItems = libItems.Single(x => x.TargetFramework == nearestLib);
foreach (var item in nearestLibItems.Items)
{
if (!string.Equals(Path.GetExtension(item), ".dll", StringComparison.OrdinalIgnoreCase))
if (!string.Equals(Path.GetExtension(item), ".dll", StringComparison.OrdinalIgnoreCase)
&& !string.Equals(Path.GetExtension(item), ".exe", StringComparison.OrdinalIgnoreCase)
&& !string.Equals(Path.GetExtension(item), ".winmd", StringComparison.OrdinalIgnoreCase))
{
continue;
}
Expand Down Expand Up @@ -418,6 +422,14 @@ await PackageExtractor.ExtractPackageAsync(
{
resolvedAssemblies.Add(Path.GetFullPath(Path.Combine(referenceAssemblyInstalledPath!, ReferenceAssemblyPath!, assembly + ".dll")));
}
else if (File.Exists(Path.Combine(referenceAssemblyInstalledPath!, ReferenceAssemblyPath!, assembly + ".exe")))
{
resolvedAssemblies.Add(Path.GetFullPath(Path.Combine(referenceAssemblyInstalledPath!, ReferenceAssemblyPath!, assembly + ".exe")));
}
else if (File.Exists(Path.Combine(referenceAssemblyInstalledPath!, ReferenceAssemblyPath!, assembly + ".winmd")))
{
resolvedAssemblies.Add(Path.GetFullPath(Path.Combine(referenceAssemblyInstalledPath!, ReferenceAssemblyPath!, assembly + ".winmd")));
}
}

// Prefer assemblies from the reference assembly package to ones otherwise provided
Expand All @@ -436,7 +448,7 @@ await PackageExtractor.ExtractPackageAsync(
var facadesPath = Path.Combine(referenceAssemblyInstalledPath!, ReferenceAssemblyPath!, "Facades");
if (Directory.Exists(facadesPath))
{
foreach (var path in Directory.GetFiles(facadesPath, "*.dll"))
foreach (var path in Directory.GetFiles(facadesPath, "*.dll").Concat(Directory.GetFiles(facadesPath, "*.exe")).Concat(Directory.GetFiles(facadesPath, "*.winmd")))
{
resolvedAssemblies.RemoveWhere(existingAssembly => Path.GetFileNameWithoutExtension(existingAssembly) == Path.GetFileNameWithoutExtension(path));
resolvedAssemblies.Add(Path.GetFullPath(path));
Expand All @@ -450,6 +462,16 @@ await PackageExtractor.ExtractPackageAsync(
resolvedAssemblies.RemoveWhere(existingAssembly => Path.GetFileNameWithoutExtension(existingAssembly) == assembly);
resolvedAssemblies.Add(Path.GetFullPath(Path.Combine(referenceAssemblyInstalledPath!, ReferenceAssemblyPath!, assembly + ".dll")));
}
else if (File.Exists(Path.Combine(referenceAssemblyInstalledPath!, ReferenceAssemblyPath!, assembly + ".exe")))
{
resolvedAssemblies.RemoveWhere(existingAssembly => Path.GetFileNameWithoutExtension(existingAssembly) == assembly);
resolvedAssemblies.Add(Path.GetFullPath(Path.Combine(referenceAssemblyInstalledPath!, ReferenceAssemblyPath!, assembly + ".exe")));
}
else if (File.Exists(Path.Combine(referenceAssemblyInstalledPath!, ReferenceAssemblyPath!, assembly + ".winmd")))
{
resolvedAssemblies.RemoveWhere(existingAssembly => Path.GetFileNameWithoutExtension(existingAssembly) == assembly);
resolvedAssemblies.Add(Path.GetFullPath(Path.Combine(referenceAssemblyInstalledPath!, ReferenceAssemblyPath!, assembly + ".winmd")));
}
}
}
else
Expand Down

0 comments on commit c69d641

Please sign in to comment.