Skip to content

Feature request: DisableImplicitTransitiveReferences #1750

@jaredpar

Description

@jaredpar

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions