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
xml.WriteAttributeString("Include", reference.Name); xml.WriteAttributeString("Include", reference.Name);
var asembly = project.AssemblyResolver.Resolve(reference); 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)); xml.WriteElementString("HintPath", FileUtility.GetRelativePath(project.TargetDirectory, asembly.FileName));
} }

1
ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs

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

4
ICSharpCode.Decompiler/Metadata/DotNetCorePathFinder.cs

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

5
ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs

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

5
ILSpy/LoadedAssembly.cs

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

Loading…
Cancel
Save