Browse Source

Don't show PDB context menu entries on bundle nodes.

pull/2214/head
Daniel Grunwald 5 years ago
parent
commit
82bb805657
  1. 2
      ILSpy/Commands/GeneratePdbContextMenuEntry.cs
  2. 4
      ILSpy/Commands/Pdb2XmlCommand.cs
  3. 3
      ILSpy/Commands/SaveCodeContextMenuEntry.cs
  4. 3
      ILSpy/Commands/SelectPdbContextMenuEntry.cs
  5. 16
      ILSpy/LoadedAssembly.cs
  6. 4
      ILSpy/TreeNodes/AssemblyTreeNode.cs

2
ILSpy/Commands/GeneratePdbContextMenuEntry.cs

@ -51,7 +51,7 @@ namespace ICSharpCode.ILSpy @@ -51,7 +51,7 @@ namespace ICSharpCode.ILSpy
{
return context.SelectedTreeNodes?.Length == 1
&& context.SelectedTreeNodes?.FirstOrDefault() is AssemblyTreeNode tn
&& !tn.LoadedAssembly.HasLoadError;
&& tn.LoadedAssembly.IsLoadedAsValidAssembly;
}
internal static void GeneratePdbForAssembly(LoadedAssembly assembly)

4
ILSpy/Commands/Pdb2XmlCommand.cs

@ -83,10 +83,10 @@ namespace ICSharpCode.ILSpy @@ -83,10 +83,10 @@ namespace ICSharpCode.ILSpy
{
var selectedNodes = context.SelectedTreeNodes;
return selectedNodes?.Any() == true
&& selectedNodes.All(n => n is AssemblyTreeNode asm && !asm.LoadedAssembly.HasLoadError);
&& selectedNodes.All(n => n is AssemblyTreeNode asm && asm.LoadedAssembly.IsLoadedAsValidAssembly);
}
}
}
#endif
#endif

3
ILSpy/Commands/SaveCodeContextMenuEntry.cs

@ -21,7 +21,6 @@ using System.Collections.Generic; @@ -21,7 +21,6 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Input;
using ICSharpCode.ILSpy.Properties;
using ICSharpCode.ILSpy.TreeNodes;
@ -75,7 +74,7 @@ namespace ICSharpCode.ILSpy.TextView @@ -75,7 +74,7 @@ namespace ICSharpCode.ILSpy.TextView
{
var assemblies = selectedNodes.OfType<AssemblyTreeNode>()
.Select(n => n.LoadedAssembly)
.Where(a => !a.HasLoadError).ToArray();
.Where(a => a.IsLoadedAsValidAssembly).ToArray();
SolutionWriter.CreateSolution(textView, selectedPath, currentLanguage, assemblies);
}
return;

3
ILSpy/Commands/SelectPdbContextMenuEntry.cs

@ -56,7 +56,8 @@ namespace ICSharpCode.ILSpy @@ -56,7 +56,8 @@ namespace ICSharpCode.ILSpy
public bool IsVisible(TextViewContext context)
{
return context.SelectedTreeNodes?.Length == 1
&& context.SelectedTreeNodes?.FirstOrDefault() is AssemblyTreeNode;
&& context.SelectedTreeNodes?.FirstOrDefault() is AssemblyTreeNode asm
&& asm.LoadedAssembly.IsLoadedAsValidAssembly;
}
}
}

16
ILSpy/LoadedAssembly.cs

@ -234,8 +234,24 @@ namespace ICSharpCode.ILSpy @@ -234,8 +234,24 @@ namespace ICSharpCode.ILSpy
}
}
/// <summary>
/// Gets whether loading finished for this file (either successfully or unsuccessfully).
/// </summary>
public bool IsLoaded => loadingTask.IsCompleted;
/// <summary>
/// Gets whether this file was loaded successfully as an assembly (not as a bundle).
/// </summary>
public bool IsLoadedAsValidAssembly {
get {
return loadingTask.Status == TaskStatus.RanToCompletion && loadingTask.Result.PEFile != null;
}
}
/// <summary>
/// Gets whether loading failed (file does not exist, unknown file format).
/// Returns false for valid assemblies and valid bundles.
/// </summary>
public bool HasLoadError => loadingTask.IsFaulted;
public bool IsAutoLoaded { get; set; }

4
ILSpy/TreeNodes/AssemblyTreeNode.cs

@ -338,6 +338,8 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -338,6 +338,8 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override bool Save(TabPageModel tabPage)
{
if (!LoadedAssembly.IsLoadedAsValidAssembly)
return false;
Language language = this.Language;
if (string.IsNullOrEmpty(language.ProjectFileExtension))
return false;
@ -445,7 +447,7 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -445,7 +447,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
{
if (context.SelectedTreeNodes == null)
return false;
return context.SelectedTreeNodes.All(n => n is AssemblyTreeNode);
return context.SelectedTreeNodes.All(n => n is AssemblyTreeNode asm && asm.LoadedAssembly.IsLoadedAsValidAssembly);
}
public bool IsEnabled(TextViewContext context)

Loading…
Cancel
Save