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

Future of incompatible-TF checks #1122

Closed
rainersigwald opened this issue Apr 13, 2017 · 4 comments
Closed

Future of incompatible-TF checks #1122

rainersigwald opened this issue Apr 13, 2017 · 4 comments
Labels
Milestone

Comments

@rainersigwald
Copy link
Member

I'm separating out an issue that I noticed while testing the fix for dotnet/msbuild#1276 (in the form of dotnet/msbuild#1866 + #993) so we can discuss it without the confusion of the other parts of the change.

In the 1.0 SDK + common targets, projects always ask their references "what framework should I build you for, given that I am TF {x}?". That enables GetNearestTargetFramework to error out if there is no compatible TF in the reference (for example, if a netstandard1.2 project references a netstandard1.5 project).

If we go ahead with my proposal that avoids extra evaluation overhead, we won't be able to preserve this behavior for free, because it requires knowledge of both referring TF and referred TFs--and the only way to pass referring TF down to the reference is by evaluating it with a global property, which is the performance problem we are trying to avoid!

How bad would losing this behavior be?

@nguerrera @livarcocc @AndyGerlicher

@rainersigwald
Copy link
Member Author

I can see a few options:

  • Preserve the current behavior
    • ➕ Keeps the incompatible-TF check
    • ➖ Requires evaluating any project that is referenced multiple times, which is inefficent, expecially for C++ projects (which have a targeted mitigation in place now but it's ugly).
  • Abandon the checks
    • ➕ Really easy 😇
    • ➖ Loses very nice, valuable information
  • Restructure the checks to be on the consuming side, rather than the producing side
    • ➕ Allows more-efficient evaluation
    • ➕ Error messages are vastly improved, because they can specify the referring project + TF and the referred's list of TFs
    • ➖ Implementation is unclear
    • ➖ Requires embedding the compatibility check in common targets, to support the (currently supported) non-SDK-full-framework-project-refers-to-incompatible-SDK-project case.

@rainersigwald
Copy link
Member Author

Discussed this with @livarcocc @dsplaisted @nguerrera and some others on Monday. Consensus is that losing the checks is bad and we shouldn't do that.

One possible implementation of "check on the consuming side" would be to make a new compatibility check, decoupled from its current home in NuGet.

@livarcocc livarcocc added this to the Unknown milestone Apr 27, 2017
Copy link
Contributor

Due to lack of recent activity, this issue has been labeled as 'stale'. It will be closed if no further activity occurs within 30 more days. Any new comment will remove the label.

@github-actions github-actions bot added the stale label Apr 25, 2024
Copy link
Contributor

This issue will now be closed since it has been labeled 'stale' without activity for 30 days.

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale May 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants