diff --git a/ILSpy/LoadedAssembly.cs b/ILSpy/LoadedAssembly.cs
index c9f145b7d..2a95e3db4 100644
--- a/ILSpy/LoadedAssembly.cs
+++ b/ILSpy/LoadedAssembly.cs
@@ -18,6 +18,7 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics;
using System.IO;
using System.Reflection.Metadata;
using System.Reflection.PortableExecutable;
@@ -41,6 +42,7 @@ namespace ICSharpCode.ILSpy
///
/// Represents an assembly loaded into ILSpy.
///
+ [DebuggerDisplay("LoadedAssembly({shortName})")]
public sealed class LoadedAssembly
{
internal static readonly ConditionalWeakTable loadedAssemblies = new ConditionalWeakTable();
diff --git a/ILSpy/MainWindow.xaml.cs b/ILSpy/MainWindow.xaml.cs
index 8e6e8b6b1..38897a59f 100644
--- a/ILSpy/MainWindow.xaml.cs
+++ b/ILSpy/MainWindow.xaml.cs
@@ -284,23 +284,24 @@ namespace ICSharpCode.ILSpy
LoadAssemblies(nugetPackagesToLoad, commandLineLoadedAssemblies, focusNode: false);
nugetPackagesToLoad.Clear();
}
- NavigateOnLaunch(args.NavigateTo, sessionSettings.ActiveTreeViewPath, spySettings);
+ var relevantAssemblies = commandLineLoadedAssemblies.ToList();
+ commandLineLoadedAssemblies.Clear(); // clear references once we don't need them anymore
+ NavigateOnLaunch(args.NavigateTo, sessionSettings.ActiveTreeViewPath, spySettings, relevantAssemblies);
if (args.Search != null)
{
SearchPane.Instance.SearchTerm = args.Search;
SearchPane.Instance.Show();
}
- commandLineLoadedAssemblies.Clear(); // clear references once we don't need them anymore
}
- async void NavigateOnLaunch(string navigateTo, string[] activeTreeViewPath, ILSpySettings spySettings)
+ async void NavigateOnLaunch(string navigateTo, string[] activeTreeViewPath, ILSpySettings spySettings, List relevantAssemblies)
{
var initialSelection = treeView.SelectedItem;
if (navigateTo != null) {
bool found = false;
if (navigateTo.StartsWith("N:", StringComparison.Ordinal)) {
string namespaceName = navigateTo.Substring(2);
- foreach (LoadedAssembly asm in commandLineLoadedAssemblies) {
+ foreach (LoadedAssembly asm in relevantAssemblies) {
AssemblyTreeNode asmNode = assemblyListTreeNode.FindAssemblyNode(asm);
if (asmNode != null) {
// FindNamespaceNode() blocks the UI if the assembly is not yet loaded,
@@ -317,7 +318,7 @@ namespace ICSharpCode.ILSpy
}
}
} else {
- IEntity mr = await Task.Run(() => FindEntityInCommandLineLoadedAssemblies(navigateTo));
+ IEntity mr = await Task.Run(() => FindEntityInRelevantAssemblies(navigateTo, relevantAssemblies));
if (mr != null && mr.ParentModule.PEFile != null) {
found = true;
if (treeView.SelectedItem == initialSelection) {
@@ -362,7 +363,7 @@ namespace ICSharpCode.ILSpy
}
}
- private IEntity FindEntityInCommandLineLoadedAssemblies(string navigateTo)
+ private IEntity FindEntityInRelevantAssemblies(string navigateTo, IEnumerable relevantAssemblies)
{
ITypeReference typeRef = null;
IMemberReference memberRef = null;
@@ -372,7 +373,7 @@ namespace ICSharpCode.ILSpy
memberRef = IdStringProvider.ParseMemberIdString(navigateTo);
typeRef = memberRef.DeclaringTypeReference;
}
- foreach (LoadedAssembly asm in commandLineLoadedAssemblies) {
+ foreach (LoadedAssembly asm in relevantAssemblies.ToList()) {
var module = asm.GetPEFileOrNull();
if (CanResolveTypeInPEFile(module, typeRef, out var typeHandle)) {
ICompilation compilation = typeHandle.Kind == HandleKind.ExportedType