From 963ff7cb3d85b7166f26b36a150d34e3fa715d2e Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sun, 31 Mar 2024 10:41:43 +0200 Subject: [PATCH] Fix #3151: Make IProjectFileWriter API public --- ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs | 4 ++-- .../CSharp/ProjectDecompiler/IProjectFileWriter.cs | 2 +- .../CSharp/ProjectDecompiler/IProjectInfoProvider.cs | 2 +- .../CSharp/ProjectDecompiler/WholeProjectDecompiler.cs | 8 +++++--- ICSharpCode.ILSpyCmd/IlspyCmdProgram.cs | 4 +--- ILSpy/Languages/CSharpLanguage.cs | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs b/ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs index d65300b7c..3043c9246 100644 --- a/ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs +++ b/ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs @@ -289,8 +289,8 @@ namespace ICSharpCode.Decompiler.Tests class TestProjectDecompiler : WholeProjectDecompiler { - public TestProjectDecompiler(Guid projecGuid, IAssemblyResolver resolver, AssemblyReferenceClassifier assemblyReferenceClassifier, DecompilerSettings settings) - : base(settings, projecGuid, resolver, assemblyReferenceClassifier, debugInfoProvider: null) + public TestProjectDecompiler(Guid projectGuid, IAssemblyResolver resolver, AssemblyReferenceClassifier assemblyReferenceClassifier, DecompilerSettings settings) + : base(settings, projectGuid, resolver, null, assemblyReferenceClassifier, debugInfoProvider: null) { } } diff --git a/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectFileWriter.cs b/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectFileWriter.cs index f66485585..28f55f6be 100644 --- a/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectFileWriter.cs +++ b/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectFileWriter.cs @@ -27,7 +27,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler /// An interface for a service that creates and writes a project file structure /// for a specific module being decompiled. /// - interface IProjectFileWriter + public interface IProjectFileWriter { /// /// Writes the content of a new project file for the specified being decompiled. diff --git a/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectInfoProvider.cs b/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectInfoProvider.cs index 306afd456..dc3d65f3f 100644 --- a/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectInfoProvider.cs +++ b/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/IProjectInfoProvider.cs @@ -25,7 +25,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler /// /// An interface that provides common information for a project being decompiled to. /// - interface IProjectInfoProvider + public interface IProjectInfoProvider { /// /// Gets the assembly resolver active for the project. diff --git a/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/WholeProjectDecompiler.cs b/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/WholeProjectDecompiler.cs index 5a22d218f..10ace23e0 100644 --- a/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/WholeProjectDecompiler.cs +++ b/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/WholeProjectDecompiler.cs @@ -99,16 +99,17 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler #endregion public WholeProjectDecompiler(IAssemblyResolver assemblyResolver) - : this(new DecompilerSettings(), assemblyResolver, assemblyReferenceClassifier: null, debugInfoProvider: null) + : this(new DecompilerSettings(), assemblyResolver, projectWriter: null, assemblyReferenceClassifier: null, debugInfoProvider: null) { } public WholeProjectDecompiler( DecompilerSettings settings, IAssemblyResolver assemblyResolver, + IProjectFileWriter projectWriter, AssemblyReferenceClassifier assemblyReferenceClassifier, IDebugInfoProvider debugInfoProvider) - : this(settings, Guid.NewGuid(), assemblyResolver, assemblyReferenceClassifier, debugInfoProvider) + : this(settings, Guid.NewGuid(), assemblyResolver, projectWriter, assemblyReferenceClassifier, debugInfoProvider) { } @@ -116,6 +117,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler DecompilerSettings settings, Guid projectGuid, IAssemblyResolver assemblyResolver, + IProjectFileWriter projectWriter, AssemblyReferenceClassifier assemblyReferenceClassifier, IDebugInfoProvider debugInfoProvider) { @@ -124,7 +126,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler AssemblyResolver = assemblyResolver ?? throw new ArgumentNullException(nameof(assemblyResolver)); AssemblyReferenceClassifier = assemblyReferenceClassifier ?? new AssemblyReferenceClassifier(); DebugInfoProvider = debugInfoProvider; - projectWriter = Settings.UseSdkStyleProjectFormat ? ProjectFileWriterSdkStyle.Create() : ProjectFileWriterDefault.Create(); + this.projectWriter = projectWriter ?? (Settings.UseSdkStyleProjectFormat ? ProjectFileWriterSdkStyle.Create() : ProjectFileWriterDefault.Create()); } // per-run members diff --git a/ICSharpCode.ILSpyCmd/IlspyCmdProgram.cs b/ICSharpCode.ILSpyCmd/IlspyCmdProgram.cs index 425357cac..57e08d5e3 100644 --- a/ICSharpCode.ILSpyCmd/IlspyCmdProgram.cs +++ b/ICSharpCode.ILSpyCmd/IlspyCmdProgram.cs @@ -24,8 +24,6 @@ using McMaster.Extensions.CommandLineUtils; using Microsoft.Extensions.Hosting; -using NuGet.Versioning; - namespace ICSharpCode.ILSpyCmd { [Command(Name = "ilspycmd", Description = "dotnet tool for decompiling .NET assemblies and generating portable PDBs", @@ -314,7 +312,7 @@ Examples: { resolver.AddSearchDirectory(path); } - var decompiler = new WholeProjectDecompiler(GetSettings(module), resolver, resolver, TryLoadPDB(module)); + var decompiler = new WholeProjectDecompiler(GetSettings(module), resolver, null, resolver, TryLoadPDB(module)); using (var projectFileWriter = new StreamWriter(File.OpenWrite(projectFileName))) return decompiler.DecompileProject(module, Path.GetDirectoryName(projectFileName), projectFileWriter); } diff --git a/ILSpy/Languages/CSharpLanguage.cs b/ILSpy/Languages/CSharpLanguage.cs index d83a412ba..a7fc1cb55 100644 --- a/ILSpy/Languages/CSharpLanguage.cs +++ b/ILSpy/Languages/CSharpLanguage.cs @@ -518,7 +518,7 @@ namespace ICSharpCode.ILSpy readonly DecompilationOptions options; public ILSpyWholeProjectDecompiler(LoadedAssembly assembly, DecompilationOptions options) - : base(options.DecompilerSettings, assembly.GetAssemblyResolver(options.DecompilerSettings.AutoLoadAssemblyReferences, options.DecompilerSettings.ApplyWindowsRuntimeProjections), assembly.GetAssemblyReferenceClassifier(options.DecompilerSettings.ApplyWindowsRuntimeProjections), assembly.GetDebugInfoOrNull()) + : base(options.DecompilerSettings, assembly.GetAssemblyResolver(options.DecompilerSettings.AutoLoadAssemblyReferences, options.DecompilerSettings.ApplyWindowsRuntimeProjections), null, assembly.GetAssemblyReferenceClassifier(options.DecompilerSettings.ApplyWindowsRuntimeProjections), assembly.GetDebugInfoOrNull()) { this.assembly = assembly; this.options = options;