Browse Source

Fix #1081: Please add a default ctor for DecompilationOptions

pull/1087/head
Siegfried Pammer 7 years ago
parent
commit
a2953913cb
  1. 2
      ILSpy/Commands/DecompileAllCommand.cs
  2. 2
      ILSpy/DebugSteps.xaml.cs
  3. 10
      ILSpy/DecompilationOptions.cs
  4. 6
      ILSpy/Languages/CSharpLanguage.cs
  5. 4
      ILSpy/MainWindow.xaml.cs
  6. 2
      ILSpy/TreeNodes/AssemblyTreeNode.cs

2
ILSpy/Commands/DecompileAllCommand.cs

@ -43,7 +43,7 @@ namespace ICSharpCode.ILSpy
Exception exception = null; Exception exception = null;
using (var writer = new System.IO.StreamWriter("c:\\temp\\decompiled\\" + asm.ShortName + ".cs")) { using (var writer = new System.IO.StreamWriter("c:\\temp\\decompiled\\" + asm.ShortName + ".cs")) {
try { try {
new CSharpLanguage().DecompileAssembly(asm, new Decompiler.PlainTextOutput(writer), new DecompilationOptions(MainWindow.Instance.CurrentLanguageVersion, Options.DecompilerSettingsPanel.CurrentDecompilerSettings) { FullDecompilation = true, CancellationToken = ct }); new CSharpLanguage().DecompileAssembly(asm, new Decompiler.PlainTextOutput(writer), new DecompilationOptions() { FullDecompilation = true, CancellationToken = ct });
} }
catch (Exception ex) { catch (Exception ex) {
writer.WriteLine(ex.ToString()); writer.WriteLine(ex.ToString());

2
ILSpy/DebugSteps.xaml.cs

@ -127,7 +127,7 @@ namespace ICSharpCode.ILSpy
var window = MainWindow.Instance; var window = MainWindow.Instance;
var state = window.TextView.GetState(); var state = window.TextView.GetState();
window.TextView.DecompileAsync(window.CurrentLanguage, window.SelectedNodes, window.TextView.DecompileAsync(window.CurrentLanguage, window.SelectedNodes,
new DecompilationOptions(window.CurrentLanguageVersion, ILSpy.Options.DecompilerSettingsPanel.CurrentDecompilerSettings) { new DecompilationOptions(window.CurrentLanguageVersion) {
StepLimit = step, StepLimit = step,
IsDebug = isDebug, IsDebug = isDebug,
TextViewState = state TextViewState = state

10
ILSpy/DecompilationOptions.cs

@ -67,6 +67,16 @@ namespace ICSharpCode.ILSpy
internal int StepLimit = int.MaxValue; internal int StepLimit = int.MaxValue;
internal bool IsDebug = false; internal bool IsDebug = false;
public DecompilationOptions()
: this(MainWindow.Instance.CurrentLanguageVersion, DecompilerSettingsPanel.CurrentDecompilerSettings)
{
}
public DecompilationOptions(LanguageVersion version)
: this(version, DecompilerSettingsPanel.CurrentDecompilerSettings)
{
}
public DecompilationOptions(LanguageVersion version, Options.DecompilerSettings settings) public DecompilationOptions(LanguageVersion version, Options.DecompilerSettings settings)
{ {
if (!Enum.TryParse(version.Version, out Decompiler.CSharp.LanguageVersion languageVersion)) if (!Enum.TryParse(version.Version, out Decompiler.CSharp.LanguageVersion languageVersion))

6
ILSpy/Languages/CSharpLanguage.cs

@ -496,16 +496,14 @@ namespace ICSharpCode.ILSpy
return TypeToString(ConvertTypeOptions.DoNotUsePrimitiveTypeNames | ConvertTypeOptions.IncludeTypeParameterDefinitions, type); return TypeToString(ConvertTypeOptions.DoNotUsePrimitiveTypeNames | ConvertTypeOptions.IncludeTypeParameterDefinitions, type);
} }
DecompilerSettings CurrentSettings => new DecompilationOptions(MainWindow.Instance.CurrentLanguageVersion, Options.DecompilerSettingsPanel.CurrentDecompilerSettings).DecompilerSettings;
public override bool ShowMember(MemberReference member) public override bool ShowMember(MemberReference member)
{ {
return showAllMembers || !CSharpDecompiler.MemberIsHidden(member, CurrentSettings); return showAllMembers || !CSharpDecompiler.MemberIsHidden(member, new DecompilationOptions().DecompilerSettings);
} }
public override MemberReference GetOriginalCodeLocation(MemberReference member) public override MemberReference GetOriginalCodeLocation(MemberReference member)
{ {
if (showAllMembers || !CurrentSettings.AnonymousMethods) if (showAllMembers || !new DecompilationOptions().DecompilerSettings.AnonymousMethods)
return member; return member;
else else
return TreeNodes.Analyzer.Helpers.GetOriginalCodeLocation(member); return TreeNodes.Analyzer.Helpers.GetOriginalCodeLocation(member);

4
ILSpy/MainWindow.xaml.cs

@ -762,7 +762,7 @@ namespace ICSharpCode.ILSpy
if (node != null && node.View(decompilerTextView)) if (node != null && node.View(decompilerTextView))
return; return;
} }
decompilationTask = decompilerTextView.DecompileAsync(this.CurrentLanguage, this.SelectedNodes, new DecompilationOptions(CurrentLanguageVersion, Options.DecompilerSettingsPanel.CurrentDecompilerSettings) { TextViewState = state }); decompilationTask = decompilerTextView.DecompileAsync(this.CurrentLanguage, this.SelectedNodes, new DecompilationOptions() { TextViewState = state });
} }
void SaveCommandExecuted(object sender, ExecutedRoutedEventArgs e) void SaveCommandExecuted(object sender, ExecutedRoutedEventArgs e)
@ -773,7 +773,7 @@ namespace ICSharpCode.ILSpy
} }
this.TextView.SaveToDisk(this.CurrentLanguage, this.TextView.SaveToDisk(this.CurrentLanguage,
this.SelectedNodes, this.SelectedNodes,
new DecompilationOptions(CurrentLanguageVersion, Options.DecompilerSettingsPanel.CurrentDecompilerSettings) { FullDecompilation = true }); new DecompilationOptions() { FullDecompilation = true });
} }
public void RefreshDecompiledView() public void RefreshDecompiledView()

2
ILSpy/TreeNodes/AssemblyTreeNode.cs

@ -291,7 +291,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
dlg.FileName = DecompilerTextView.CleanUpName(assembly.ShortName) + language.ProjectFileExtension; dlg.FileName = DecompilerTextView.CleanUpName(assembly.ShortName) + language.ProjectFileExtension;
dlg.Filter = language.Name + " project|*" + language.ProjectFileExtension + "|" + language.Name + " single file|*" + language.FileExtension + "|All files|*.*"; dlg.Filter = language.Name + " project|*" + language.ProjectFileExtension + "|" + language.Name + " single file|*" + language.FileExtension + "|All files|*.*";
if (dlg.ShowDialog() == true) { if (dlg.ShowDialog() == true) {
DecompilationOptions options = new DecompilationOptions(MainWindow.Instance.CurrentLanguageVersion, Options.DecompilerSettingsPanel.CurrentDecompilerSettings); DecompilationOptions options = new DecompilationOptions();
options.FullDecompilation = true; options.FullDecompilation = true;
if (dlg.FilterIndex == 1) { if (dlg.FilterIndex == 1) {
options.SaveAsProjectDirectory = Path.GetDirectoryName(dlg.FileName); options.SaveAsProjectDirectory = Path.GetDirectoryName(dlg.FileName);

Loading…
Cancel
Save