diff --git a/src/Main/Base/Project/Src/Project/AbstractProject.cs b/src/Main/Base/Project/Src/Project/AbstractProject.cs
index b32ddd3296..66b0cfbd30 100644
--- a/src/Main/Base/Project/Src/Project/AbstractProject.cs
+++ b/src/Main/Base/Project/Src/Project/AbstractProject.cs
@@ -525,6 +525,10 @@ namespace ICSharpCode.SharpDevelop.Project
{
}
+ ///
+ /// Resolves assembly references for this project.
+ /// The resulting list of resolved references will include project references.
+ ///
public virtual IEnumerable ResolveAssemblyReferences(CancellationToken cancellationToken)
{
ResolveAssemblyReferences();
diff --git a/src/Main/Base/Project/Src/Project/MSBuildInternals.cs b/src/Main/Base/Project/Src/Project/MSBuildInternals.cs
index 7fbbc6f5dc..27446a7aa1 100644
--- a/src/Main/Base/Project/Src/Project/MSBuildInternals.cs
+++ b/src/Main/Base/Project/Src/Project/MSBuildInternals.cs
@@ -222,7 +222,7 @@ namespace ICSharpCode.SharpDevelop.Project
var query =
from msbuildItem in resolvedAssemblyProjectItems
let originalInclude = msbuildItem.GetMetadataValue("OriginalItemSpec")
- join item in referenceProjectItems on originalInclude equals item.Include into referenceItems
+ join item in referenceProjectItems.Where(p => p.ItemType != ItemType.ProjectReference) on originalInclude equals item.Include into referenceItems
select new {
OriginalInclude = originalInclude,
AssemblyName = new DomAssemblyName(msbuildItem.GetMetadataValue("FusionName")),
@@ -232,6 +232,7 @@ namespace ICSharpCode.SharpDevelop.Project
ReferenceItems = referenceItems
};
List resolvedAssemblies = new List();
+ List handledReferenceItems = new List();
foreach (var assembly in query) {
LoggingService.Debug("Got information about " + assembly.OriginalInclude + "; fullpath=" + assembly.FullPath);
foreach (var referenceItem in assembly.ReferenceItems) {
@@ -239,6 +240,7 @@ namespace ICSharpCode.SharpDevelop.Project
referenceItem.FileName = assembly.FullPath;
referenceItem.Redist = assembly.Redist;
referenceItem.DefaultCopyLocalValue = assembly.CopyLocal;
+ handledReferenceItems.Add(referenceItem);
}
ReferenceProjectItem firstItem = assembly.ReferenceItems.FirstOrDefault();
if (firstItem != null) {
@@ -247,6 +249,10 @@ namespace ICSharpCode.SharpDevelop.Project
resolvedAssemblies.Add(new ReferenceProjectItem(baseProject, assembly.OriginalInclude) { FileName = assembly.FullPath });
}
}
+ // Add any assemblies that weren't resolved yet. This is important - for example, this adds back project references.
+ foreach (var referenceItem in referenceProjectItems.Except(handledReferenceItems)) {
+ resolvedAssemblies.Add(referenceItem);
+ }
return resolvedAssemblies;
}