MsBuildProjectReferenceDependencyGraph icon indicating copy to clipboard operation
MsBuildProjectReferenceDependencyGraph copied to clipboard

C++ style Shared Projects populated as orphaned nodes

Open madkat opened this issue 4 years ago • 1 comments

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.

madkat avatar Apr 30 '21 20:04 madkat

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?

aolszowka avatar May 01 '21 13:05 aolszowka