Browse Source

don't write HintPath for .NET Core shared assembly

pull/2186/head
文煌 5 years ago committed by Siegfried Pammer
parent
commit
e8e0f89f6d
  1. 2
      ICSharpCode.Decompiler/CSharp/ProjectDecompiler/ProjectFileWriterSdkStyle.cs
  2. 1
      ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs
  3. 4
      ICSharpCode.Decompiler/Metadata/DotNetCorePathFinder.cs
  4. 5
      ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs
  5. 5
      ILSpy/LoadedAssembly.cs

2
ICSharpCode.Decompiler/CSharp/ProjectDecompiler/ProjectFileWriterSdkStyle.cs

@ -185,7 +185,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler @@ -185,7 +185,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
xml.WriteAttributeString("Include", reference.Name);
var asembly = project.AssemblyResolver.Resolve(reference);
if (asembly != null && !project.AssemblyResolver.IsGacAssembly(reference))
if (asembly != null && !project.AssemblyResolver.IsGacAssembly(reference) && !project.AssemblyResolver.IsSharedAssembly(reference))
{
xml.WriteElementString("HintPath", FileUtility.GetRelativePath(project.TargetDirectory, asembly.FileName));
}

1
ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs

@ -49,6 +49,7 @@ namespace ICSharpCode.Decompiler.Metadata @@ -49,6 +49,7 @@ namespace ICSharpCode.Decompiler.Metadata
PEFile ResolveModule(PEFile mainModule, string moduleName);
#endif
bool IsGacAssembly(IAssemblyReference reference);
bool IsSharedAssembly(IAssemblyReference reference);
}
public interface IAssemblyReference

4
ICSharpCode.Decompiler/Metadata/DotNetCorePathFinder.cs

@ -139,7 +139,7 @@ namespace ICSharpCode.Decompiler.Metadata @@ -139,7 +139,7 @@ namespace ICSharpCode.Decompiler.Metadata
}
}
return FallbackToDotNetSharedDirectory(name);
return TryResolveDotNetCoreShared(name);
}
internal string GetReferenceAssemblyPath(string targetFramework)
@ -188,7 +188,7 @@ namespace ICSharpCode.Decompiler.Metadata @@ -188,7 +188,7 @@ namespace ICSharpCode.Decompiler.Metadata
}
}
string FallbackToDotNetSharedDirectory(IAssemblyReference name)
public string TryResolveDotNetCoreShared(IAssemblyReference name)
{
if (dotnetBasePath == null)
return null;

5
ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs

@ -189,6 +189,11 @@ namespace ICSharpCode.Decompiler.Metadata @@ -189,6 +189,11 @@ namespace ICSharpCode.Decompiler.Metadata
return GetAssemblyInGac(reference) != null;
}
public virtual bool IsSharedAssembly(IAssemblyReference reference)
{
return targetFrameworkIdentifier == TargetFrameworkIdentifier.NETCoreApp && dotNetCorePathFinder.TryResolveDotNetCoreShared(reference) != null;
}
public string FindAssemblyFile(IAssemblyReference name)
{
if (name.IsWindowsRuntime)

5
ILSpy/LoadedAssembly.cs

@ -288,6 +288,11 @@ namespace ICSharpCode.ILSpy @@ -288,6 +288,11 @@ namespace ICSharpCode.ILSpy
return parent.universalResolver?.IsGacAssembly(reference) == true;
}
public bool IsSharedAssembly(IAssemblyReference reference)
{
return parent.universalResolver?.IsSharedAssembly(reference) == true;
}
public PEFile Resolve(Decompiler.Metadata.IAssemblyReference reference)
{
return parent.LookupReferencedAssembly(reference)?.GetPEFileOrNull();

Loading…
Cancel
Save