Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: DisableImplicitTransitiveReferences #1750

Closed
jaredpar opened this issue Nov 16, 2017 · 2 comments · Fixed by #1751
Closed

Feature request: DisableImplicitTransitiveReferences #1750

jaredpar opened this issue Nov 16, 2017 · 2 comments · Fixed by #1751

Comments

@jaredpar
Copy link
Member

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.

@nguerrera
Copy link
Contributor

This is a good idea. The name works for me too.

@KirillOsenkov
Copy link
Member

Also there's little control over whether the assets "inherited" transitively will get copied to output or not. See this issue for details: NuGet/Home#5986

jaredpar added a commit to jaredpar/sdk that referenced this issue Nov 16, 2017
This implements the feature described in dotnet#1750. It provides projects with a way to
explicitly opt-out of implicit transitive refernces by setting the
DisableImplicitTransitiveReferences property to `'true'`.

closes dotnet#1750
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants