Browse Source

Adding referenced assemblies to entity model context in AssemblyParserService.GetAssemblyModel().

pull/80/head
Andreas Weizel 13 years ago
parent
commit
2a5d439dff
  1. 2
      src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs
  2. 15
      src/Main/SharpDevelop/Parser/AssemblyParserService.cs

2
src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs

@ -133,7 +133,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -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()

15
src/Main/SharpDevelop/Parser/AssemblyParserService.cs

@ -322,8 +322,19 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -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<IUnresolvedAssembly>();
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<IModelFactory>().CreateAssemblyModel(context);
model.Update(EmptyList<IUnresolvedTypeDefinition>.Instance, assembly.ProjectContent.TopLevelTypeDefinitions.ToList());

Loading…
Cancel
Save