-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Description
Implicit transitive references is a neat feature and definitely a benefit for the vast majority of projects out there. The feature is not free though and trying to enable it on dotnet/roslyn has caused me no end of headaches. In particular:
- VSIX #433: The VSSDK build tasks do not multi-targeting nor do they understand the new metadata the SDK is attaching to products. Before implicit transitive references this was fine because I didn't reveal my multi-targeted projects to the VSSDK. Now I can't avoid doing so. This issue can be worked around but is tedious.
- CreatePkgDef command line length: The CreatePkgDef command takes as an input on the command line all references a project contains. Implicit transitive references, via the NuGet graph explosion of references, puts so many references on the command line that it blows past the 32,000 character limit Windows supports
- RAR time: More references means more time spent in RAR. This causes a roughly 31% increase in build time for the Roslyn repo.
To work around this I think the SDK should support the ability to opt out of implicit transitive references.
<DisableImplicitTransitiveReferences>true</DisableImplicitTransitiveReferences>
This will make it significantly easier to adopt the SDK into existing projects.
Note: I'm aware you can unofficially disable this today by overriding the "IncludeTransitiveProjectReferences"
target. That work around is unsupported and simply can't be done when using the new MSBuild file format + directory build props / targets.
KirillOsenkov and nguerrera
Metadata
Metadata
Assignees
Labels
No labels