MsBuildProjectReferenceDependencyGraph
MsBuildProjectReferenceDependencyGraph copied to clipboard
C++ style Shared Projects populated as orphaned nodes
Not sure if this is a bug in this software, or a failure on the MSBuild side to correctly process the distinction, but utilizing C++ Shared Projects results in orphaned nodes for the shared project itself. C# Shared Project nodes do not appear in the graph at all.
Snip from a solution file demonstrating how the two types of shared projects are contained:
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SynergyCodeGenerator", "SynergyCodeGenerator\SynergyCodeGenerator.shproj", "{676A1601-B931-48B6-8FE4-67E0E57E0CE6}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SynergyDotnetAnalysisEngine", "SynergyDotnetAnalysisEngine\SynergyDotnetAnalysisEngine.vcxitems", "{4FA605A4-7114-4B20-980A-935DD4069F03}"
EndProject
There are minor differences in how those imports are handled on consuming projects. I do not think the import format is relevant unless we want to establish dependence on Shared Projects. C++
<ImportGroup Label="Shared">
<Import Project="..\SynergyDotnetAnalysisEngine.vcxitems" Label="Shared" />
</ImportGroup>
C#
<Import Project="..\SynergyCodeGenerator.projitems" Label="Shared" />
My assumption is that this is a difference on the MSBuild side since I do not see any specific handling for .shproj in this source base. Perhaps there is a workaround that could be done here, or a better issue to be logged in MSBuild.
Great write up @madkat any chance you can provide a Git Repo with some sample projects? I suspect the same as you probably an MSBuild bug, I wonder if upgrading to a more recent version of the MSBuild Library would resolve this?