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 @@ -104,12 +104,18 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
// Look at referenced assemblies
if ((assemblyModel.References != null) && (assemblyParserService != null)) {
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 referenceAssemblyModel = assemblyParserService.GetAssemblyModel(resolvedFile);
resolveTypeDefModel = referenceAssemblyModel.TopLevelTypeDefinitions[baseTypeDefinition.FullTypeName];
if (resolveTypeDefModel != null) {
return resolveTypeDefModel;
if (resolvedFile != null) {
var referenceAssemblyModel = assemblyParserService.GetAssemblyModel(resolvedFile);
resolveTypeDefModel = referenceAssemblyModel.TopLevelTypeDefinitions[baseTypeDefinition.FullTypeName];
if (resolveTypeDefModel != null) {
return resolveTypeDefModel;
}
}
}
}

Loading…
Cancel
Save