Browse Source

ClassBrowser: Broken base types when project contains references to assemblies somewhere in file system (neither output dir, nor GAC).

pull/315/head
Andreas Weizel 12 years ago
parent
commit
d255a12552
  1. 16
      src/Main/Base/Project/Dom/ClassBrowser/BaseTypesTreeNode.cs

16
src/Main/Base/Project/Dom/ClassBrowser/BaseTypesTreeNode.cs

@ -104,12 +104,18 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
// Look at referenced assemblies // Look at referenced assemblies
if ((assemblyModel.References != null) && (assemblyParserService != null)) { if ((assemblyModel.References != null) && (assemblyParserService != null)) {
foreach (var referencedAssemblyName in assemblyModel.References.AssemblyNames) { foreach (var referencedAssemblyName in assemblyModel.References.AssemblyNames) {
DefaultAssemblySearcher searcher = new DefaultAssemblySearcher(assemblyModel.Location); CombinedAssemblySearcher searcher = new CombinedAssemblySearcher();
if ((assemblyModel.Context != null) && (assemblyModel.Context.Project != null)) {
searcher.AddSearcher(new ProjectAssemblyReferenceSearcher(assemblyModel.Context.Project));
}
searcher.AddSearcher(new DefaultAssemblySearcher(assemblyModel.Location));
var resolvedFile = searcher.FindAssembly(referencedAssemblyName.AssemblyName); var resolvedFile = searcher.FindAssembly(referencedAssemblyName.AssemblyName);
var referenceAssemblyModel = assemblyParserService.GetAssemblyModel(resolvedFile); if (resolvedFile != null) {
resolveTypeDefModel = referenceAssemblyModel.TopLevelTypeDefinitions[baseTypeDefinition.FullTypeName]; var referenceAssemblyModel = assemblyParserService.GetAssemblyModel(resolvedFile);
if (resolveTypeDefModel != null) { resolveTypeDefModel = referenceAssemblyModel.TopLevelTypeDefinitions[baseTypeDefinition.FullTypeName];
return resolveTypeDefModel; if (resolveTypeDefModel != null) {
return resolveTypeDefModel;
}
} }
} }
} }

Loading…
Cancel
Save