Skip to content

Decoupling Visual Studio and the .NET SDK#46477

Merged
jaredpar merged 11 commits intodotnet:mainfrom
jaredpar:compiler
Mar 20, 2025
Merged

Decoupling Visual Studio and the .NET SDK#46477
jaredpar merged 11 commits intodotnet:mainfrom
jaredpar:compiler

Conversation

@jaredpar
Copy link
Member

@jaredpar jaredpar commented Feb 3, 2025

No description provided.

@ghost ghost added Area-Infrastructure untriaged Request triage from a team member labels Feb 3, 2025
@jaredpar
Copy link
Member Author

jaredpar commented Feb 3, 2025

@@ -1,22 +1,36 @@
# Torn .NET SDK
# Decoulping the .NET SDK and Visual Studio
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Decoulping the .NET SDK and Visual Studio
# Decoupling the .NET SDK and Visual Studio

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bah ... I didn't revert the changes to this doc in my final push. Ignore the changes here. This doc should be unchanged.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I get the distinction between these docs now.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The torn state doc is basically "how does .NET 9" work while the new one is "how does .NET 10 and beyond work". At some point this doc is deleted from the repo when .NET 9 and before go out of support.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The torn state doc is basically "how does .NET 9" work while the new one is "how does .NET 10 and beyond work". At some point this doc is deleted from the repo when .NET 9 and before go out of support.

Consider writing this reasoning into the docs themselves.


### NuGet based analyzers

Analyzers which ship via NuGet will continue to following the existing [support policies][matrix-of-paine]. This means that they will either need to target a sufficiently old version of Roslyn or implement multi-targeting support to function in Visual Studio.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

matrix-of-paine

Alright, this got me. Jeremy looked over and wondered what I was laughing at.

Co-authored-by: Fred Silberberg <fred@silberberg.xyz>
Co-authored-by: Rainer Sigwald <raines@microsoft.com>
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The torn state doc is basically "how does .NET 9" work while the new one is "how does .NET 10 and beyond work". At some point this doc is deleted from the repo when .NET 9 and before go out of support.

Consider writing this reasoning into the docs themselves.


This also benefits analyzer and generator development models as they can now target the latest version of Roslyn. There is no more need to multi-target because the version of the compiler the analyzer will be used with is known at ship time for all core build scenarios.

This does mean that our design time experience can differ from our command line experience when customers are in a torn state. Specifically it's possible, even likely in some cases, that the diagnostics produced by design time builds will differ from command line builds. That is a trade off that we are willing to make for reliability. Customers who wish to have a consistent experience between design time should not operate in a torn state.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it worth providing a way for a user to use the .NET SDK still so that their command-line and VS builds are the same? At least if its opt-in we can have docs that explain why its a bad idea and not to ask for support when they've done this. I worry that preventing it all together only helps us and not our users.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't prevent it, we just say if you want tthe builds to be the same then use the .NTE SDK that comes with Visual Studio.

Co-authored-by: Jan Jones <jan.jones.cz@gmail.com>
jaredpar and others added 2 commits March 19, 2025 08:16
Co-authored-by: Jan Jones <jan.jones.cz@gmail.com>
@jaredpar
Copy link
Member Author

Apologies for losing track of this PR for so long. Addressed feedback.

Co-authored-by: Fred Silberberg <fred@silberberg.xyz>
Co-authored-by: Jan Jones <jan.jones.cz@gmail.com>
@jaredpar jaredpar merged commit 1b4e91b into dotnet:main Mar 20, 2025
8 checks passed
@jaredpar jaredpar deleted the compiler branch March 20, 2025 23:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area-Infrastructure untriaged Request triage from a team member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants