diff --git a/src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs b/src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs index 3ef5aecbb0..5be1332d33 100644 --- a/src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs +++ b/src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs @@ -133,7 +133,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser ProjectServiceCurrentSolutionChanged(null, null); // Load workspaces from configuration - LoadWorkspaces(); + treeView.Loaded += (sender, e) => LoadWorkspaces(); } public override void Dispose() diff --git a/src/Main/SharpDevelop/Parser/AssemblyParserService.cs b/src/Main/SharpDevelop/Parser/AssemblyParserService.cs index ed66405e0b..c838030cfb 100644 --- a/src/Main/SharpDevelop/Parser/AssemblyParserService.cs +++ b/src/Main/SharpDevelop/Parser/AssemblyParserService.cs @@ -322,8 +322,19 @@ namespace ICSharpCode.SharpDevelop.Parser public IAssemblyModel GetAssemblyModel(FileName fileName, bool includeInternalMembers = false) { LoadedAssembly assembly = GetLoadedAssembly(fileName, includeInternalMembers); - // TODO context might need references as well - IEntityModelContext context = new AssemblyEntityModelContext(assembly.ProjectContent); + // Get references + DefaultAssemblySearcher assemblySearcher = new DefaultAssemblySearcher(fileName); + var referencedAssemblies = new List(); + foreach (var referencedAssemblyName in assembly.References) { + var assemblyFileName = assemblySearcher.FindAssembly(referencedAssemblyName); + if (assemblyFileName != null) { + var loadedRefAssembly = GetLoadedAssembly(assemblyFileName, includeInternalMembers); + if (loadedRefAssembly != null) { + referencedAssemblies.Add(loadedRefAssembly.ProjectContent); + } + } + } + IEntityModelContext context = new AssemblyEntityModelContext(assembly.ProjectContent, referencedAssemblies.ToArray()); IUpdateableAssemblyModel model = SD.GetService().CreateAssemblyModel(context); model.Update(EmptyList.Instance, assembly.ProjectContent.TopLevelTypeDefinitions.ToList());