diff --git a/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs index 7069cc72fe..aeeb5c83bf 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs @@ -128,7 +128,7 @@ namespace ICSharpCode.Core ReferenceProjectItem reference = e.ProjectItem as ReferenceProjectItem; if (reference != null) { try { - IProjectContent referencedContent = ProjectContentRegistry.GetProjectContentForReference(reference); + IProjectContent referencedContent = ProjectContentRegistry.GetExistingProjectContentForReference(reference); if (referencedContent != null) { ReferencedContents.Remove(referencedContent); OnReferencedContentsChanged(EventArgs.Empty); diff --git a/src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs b/src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs index 11dc3fa775..00dfb7672f 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs @@ -95,6 +95,28 @@ namespace ICSharpCode.Core } } + public static IProjectContent GetExistingProjectContentForReference(ReferenceProjectItem item) + { + if (item is ProjectReferenceProjectItem) { + if (((ProjectReferenceProjectItem)item).ReferencedProject == null) + { + return null; + } + return ParserService.GetProjectContent(((ProjectReferenceProjectItem)item).ReferencedProject); + } + lock (contents) { + string itemInclude = item.Include; + string itemFileName = item.FileName; + if (contents.ContainsKey(itemFileName)) { + return contents[itemFileName]; + } + if (contents.ContainsKey(itemInclude)) { + return contents[itemInclude]; + } + } + return null; + } + public static IProjectContent GetProjectContentForReference(ReferenceProjectItem item) { if (item is ProjectReferenceProjectItem) {