Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs
Original file line number Diff line number Diff line change
Expand Up @@ -290,8 +290,8 @@ static async Task RunTest(string outputDir, string fileToTest)

class TestProjectDecompiler : WholeProjectDecompiler
{
public TestProjectDecompiler(Guid projectGuid, IAssemblyResolver resolver, AssemblyReferenceClassifier assemblyReferenceClassifier, DecompilerSettings settings)
: base(settings, projectGuid, resolver, null, assemblyReferenceClassifier, debugInfoProvider: null)
public TestProjectDecompiler(Guid projectGuid, IAssemblyResolver resolver, IAssemblyReferenceClassifier assemblyReferenceClassifier, DecompilerSettings settings)
: base(settings, projectGuid, resolver, settings.UseSdkStyleProjectFormat ? ProjectFileWriterSdkStyle.Create() : ProjectFileWriterDefault.Create(), assemblyReferenceClassifier, debugInfoProvider: null)
{
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public interface IProjectInfoProvider
/// </summary>
IAssemblyResolver AssemblyResolver { get; }

AssemblyReferenceClassifier AssemblyReferenceClassifier { get; }
IAssemblyReferenceClassifier AssemblyReferenceClassifier { get; }

/// <summary>
/// Gets the C# language version of the project.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public LanguageVersion LanguageVersion {

public IAssemblyResolver AssemblyResolver { get; }

public AssemblyReferenceClassifier AssemblyReferenceClassifier { get; }
public IAssemblyReferenceClassifier AssemblyReferenceClassifier { get; }

public IDebugInfoProvider DebugInfoProvider { get; }

Expand Down Expand Up @@ -110,9 +110,9 @@ public WholeProjectDecompiler(
DecompilerSettings settings,
IAssemblyResolver assemblyResolver,
IProjectFileWriter projectWriter,
AssemblyReferenceClassifier assemblyReferenceClassifier,
IAssemblyReferenceClassifier assemblyReferenceClassifier,
IDebugInfoProvider debugInfoProvider)
: this(settings, Guid.NewGuid(), assemblyResolver, projectWriter, assemblyReferenceClassifier, debugInfoProvider)
: this(settings, Guid.NewGuid(), assemblyResolver, projectWriter ?? (settings.UseSdkStyleProjectFormat ? ProjectFileWriterSdkStyle.Create() : ProjectFileWriterDefault.Create()), assemblyReferenceClassifier ?? new AssemblyReferenceClassifier(), debugInfoProvider)
{
}

Expand All @@ -121,15 +121,15 @@ protected WholeProjectDecompiler(
Guid projectGuid,
IAssemblyResolver assemblyResolver,
IProjectFileWriter projectWriter,
AssemblyReferenceClassifier assemblyReferenceClassifier,
IAssemblyReferenceClassifier assemblyReferenceClassifier,
IDebugInfoProvider debugInfoProvider)
{
Settings = settings ?? throw new ArgumentNullException(nameof(settings));
ProjectGuid = projectGuid;
AssemblyResolver = assemblyResolver ?? throw new ArgumentNullException(nameof(assemblyResolver));
AssemblyReferenceClassifier = assemblyReferenceClassifier ?? new AssemblyReferenceClassifier();
AssemblyReferenceClassifier = assemblyReferenceClassifier ?? throw new ArgumentNullException(nameof(assemblyReferenceClassifier));
DebugInfoProvider = debugInfoProvider;
this.projectWriter = projectWriter ?? (Settings.UseSdkStyleProjectFormat ? ProjectFileWriterSdkStyle.Create() : ProjectFileWriterDefault.Create());
this.projectWriter = projectWriter ?? throw new ArgumentNullException(nameof(projectWriter));
}

// per-run members
Expand Down
8 changes: 7 additions & 1 deletion ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,13 @@ public interface IAssemblyResolver
#endif
}

public class AssemblyReferenceClassifier
public interface IAssemblyReferenceClassifier
{
bool IsGacAssembly(IAssemblyReference reference);
bool IsSharedAssembly(IAssemblyReference reference, [NotNullWhen(true)] out string? runtimePack);
}

public class AssemblyReferenceClassifier : IAssemblyReferenceClassifier
{
/// <summary>
/// For GAC assembly references, the WholeProjectDecompiler will omit the HintPath in the
Expand Down
2 changes: 1 addition & 1 deletion ICSharpCode.ILSpyCmd/BamlAwareWholeProjectDecompiler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ sealed class BamlAwareWholeProjectDecompiler : WholeProjectDecompiler
public BamlAwareWholeProjectDecompiler(
DecompilerSettings settings,
IAssemblyResolver assemblyResolver,
AssemblyReferenceClassifier assemblyReferenceClassifier,
IAssemblyReferenceClassifier assemblyReferenceClassifier,
IDebugInfoProvider debugInfoProvider,
BamlDecompilerTypeSystem bamlTypeSystem,
BamlDecompilerSettings bamlSettings)
Expand Down
2 changes: 1 addition & 1 deletion ILSpy/Languages/CSharpLanguage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -570,7 +570,7 @@ public ResourceHandlerProjectDecompiler(
DecompilerSettings settings,
IAssemblyResolver resolver,
IProjectFileWriter? projectWriter,
AssemblyReferenceClassifier? assemblyReferenceClassifier,
IAssemblyReferenceClassifier? assemblyReferenceClassifier,
ICSharpCode.Decompiler.DebugInfo.IDebugInfoProvider? debugInfoProvider)
: base(settings, resolver, projectWriter!, assemblyReferenceClassifier!, debugInfoProvider!)
{
Expand Down
Loading