Skip to content

Commit fbbcff3

Browse files
Fix #3151: Make IProjectFileWriter API public
1 parent d4a4be9 commit fbbcff3

File tree

6 files changed

+11
-11
lines changed

6 files changed

+11
-11
lines changed

ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,8 @@ static async Task RunTest(string outputDir, string fileToTest)
289289

290290
class TestProjectDecompiler : WholeProjectDecompiler
291291
{
292-
public TestProjectDecompiler(Guid projecGuid, IAssemblyResolver resolver, AssemblyReferenceClassifier assemblyReferenceClassifier, DecompilerSettings settings)
293-
: base(settings, projecGuid, resolver, assemblyReferenceClassifier, debugInfoProvider: null)
292+
public TestProjectDecompiler(Guid projectGuid, IAssemblyResolver resolver, AssemblyReferenceClassifier assemblyReferenceClassifier, DecompilerSettings settings)
293+
: base(settings, projectGuid, resolver, null, assemblyReferenceClassifier, debugInfoProvider: null)
294294
{
295295
}
296296
}

ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectFileWriter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
2727
/// An interface for a service that creates and writes a project file structure
2828
/// for a specific module being decompiled.
2929
/// </summary>
30-
interface IProjectFileWriter
30+
public interface IProjectFileWriter
3131
{
3232
/// <summary>
3333
/// Writes the content of a new project file for the specified <paramref name="module"/> being decompiled.

ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectInfoProvider.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
2525
/// <summary>
2626
/// An interface that provides common information for a project being decompiled to.
2727
/// </summary>
28-
interface IProjectInfoProvider
28+
public interface IProjectInfoProvider
2929
{
3030
/// <summary>
3131
/// Gets the assembly resolver active for the project.

ICSharpCode.Decompiler/CSharp/ProjectDecompiler/WholeProjectDecompiler.cs

+5-3
Original file line numberDiff line numberDiff line change
@@ -99,23 +99,25 @@ public LanguageVersion LanguageVersion {
9999
#endregion
100100

101101
public WholeProjectDecompiler(IAssemblyResolver assemblyResolver)
102-
: this(new DecompilerSettings(), assemblyResolver, assemblyReferenceClassifier: null, debugInfoProvider: null)
102+
: this(new DecompilerSettings(), assemblyResolver, projectWriter: null, assemblyReferenceClassifier: null, debugInfoProvider: null)
103103
{
104104
}
105105

106106
public WholeProjectDecompiler(
107107
DecompilerSettings settings,
108108
IAssemblyResolver assemblyResolver,
109+
IProjectFileWriter projectWriter,
109110
AssemblyReferenceClassifier assemblyReferenceClassifier,
110111
IDebugInfoProvider debugInfoProvider)
111-
: this(settings, Guid.NewGuid(), assemblyResolver, assemblyReferenceClassifier, debugInfoProvider)
112+
: this(settings, Guid.NewGuid(), assemblyResolver, projectWriter, assemblyReferenceClassifier, debugInfoProvider)
112113
{
113114
}
114115

115116
protected WholeProjectDecompiler(
116117
DecompilerSettings settings,
117118
Guid projectGuid,
118119
IAssemblyResolver assemblyResolver,
120+
IProjectFileWriter projectWriter,
119121
AssemblyReferenceClassifier assemblyReferenceClassifier,
120122
IDebugInfoProvider debugInfoProvider)
121123
{
@@ -124,7 +126,7 @@ protected WholeProjectDecompiler(
124126
AssemblyResolver = assemblyResolver ?? throw new ArgumentNullException(nameof(assemblyResolver));
125127
AssemblyReferenceClassifier = assemblyReferenceClassifier ?? new AssemblyReferenceClassifier();
126128
DebugInfoProvider = debugInfoProvider;
127-
projectWriter = Settings.UseSdkStyleProjectFormat ? ProjectFileWriterSdkStyle.Create() : ProjectFileWriterDefault.Create();
129+
this.projectWriter = projectWriter ?? (Settings.UseSdkStyleProjectFormat ? ProjectFileWriterSdkStyle.Create() : ProjectFileWriterDefault.Create());
128130
}
129131

130132
// per-run members

ICSharpCode.ILSpyCmd/IlspyCmdProgram.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424

2525
using Microsoft.Extensions.Hosting;
2626

27-
using NuGet.Versioning;
28-
2927
namespace ICSharpCode.ILSpyCmd
3028
{
3129
[Command(Name = "ilspycmd", Description = "dotnet tool for decompiling .NET assemblies and generating portable PDBs",
@@ -314,7 +312,7 @@ ProjectId DecompileAsProject(string assemblyFileName, string projectFileName)
314312
{
315313
resolver.AddSearchDirectory(path);
316314
}
317-
var decompiler = new WholeProjectDecompiler(GetSettings(module), resolver, resolver, TryLoadPDB(module));
315+
var decompiler = new WholeProjectDecompiler(GetSettings(module), resolver, null, resolver, TryLoadPDB(module));
318316
using (var projectFileWriter = new StreamWriter(File.OpenWrite(projectFileName)))
319317
return decompiler.DecompileProject(module, Path.GetDirectoryName(projectFileName), projectFileWriter);
320318
}

ILSpy/Languages/CSharpLanguage.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ class ILSpyWholeProjectDecompiler : WholeProjectDecompiler
518518
readonly DecompilationOptions options;
519519

520520
public ILSpyWholeProjectDecompiler(LoadedAssembly assembly, DecompilationOptions options)
521-
: base(options.DecompilerSettings, assembly.GetAssemblyResolver(options.DecompilerSettings.AutoLoadAssemblyReferences, options.DecompilerSettings.ApplyWindowsRuntimeProjections), assembly.GetAssemblyReferenceClassifier(options.DecompilerSettings.ApplyWindowsRuntimeProjections), assembly.GetDebugInfoOrNull())
521+
: base(options.DecompilerSettings, assembly.GetAssemblyResolver(options.DecompilerSettings.AutoLoadAssemblyReferences, options.DecompilerSettings.ApplyWindowsRuntimeProjections), null, assembly.GetAssemblyReferenceClassifier(options.DecompilerSettings.ApplyWindowsRuntimeProjections), assembly.GetDebugInfoOrNull())
522522
{
523523
this.assembly = assembly;
524524
this.options = options;

0 commit comments

Comments
 (0)