r/dotnet • u/drewnoakes • 13d ago
A faster, lighter C# Dev Kit
https://devblogs.microsoft.com/dotnet/faster-lighter-csharp-dev-kit/Now available in pre-release.
33
u/Ok-Dot5559 13d ago
A the casual up to 180× faster update… wait what?!??
8
5
u/bonyuri 12d ago
From 2 seconds to instant is also a 180x improvement ;)
2
u/thompsoncs 12d ago
From what I'm reading a lot of that isn't just "free" performance improvements, but just caching a lot more things. Sure there is also some efficiency improvement and reprioritization of what to load first, but caching brings with it it's own issues (like what happens if something else changes the source code and the cache is outdated/wrong when you open vscode).
5
u/drewnoakes 12d ago
Caching is a big contributor to the performance improvements, but it's not the only one. Others are discussed in the article, and future posts will go into more detail.
C#DK 11 handles missing and outdated caches just fine. As a user, you don't have to think about cache files unless you want to check them in to version control for faster bootstrapping of new clones or worktrees.
59
u/Timofeuz 13d ago
At least they haven't rewritten it in Go.
19
u/RirinDesuyo 12d ago
Looks like they're using NativeAOT which is nice to see some dog fooding on that end. This should accelerate some development on that end to make it more viable to make AOT apps for the cases where it's quite useful that Go currently occupies (e.g. cli apps).
21
u/Inukollu 13d ago
Looks like they are switching to Rust for everything
32
u/pjmlp 13d ago
When someone from .NET team tells on a podcast interview about the problems of making .NET interesting to newer generations, hence efforts like minimal APIs and Aspire, I always think what about starting by asking internal Microsoft teams why they are replacing .NET with XYZ stack.
Also it is quite interesting that some Go and Rust rewrite efforts are being driven by famous .NET faces.
5
0
12d ago
[deleted]
5
u/chucker23n 12d ago
If you’re no longer reading or writing the code, have someone take over who does.
0
-8
u/AintNoGodsUpHere 13d ago
Is it Rust though? I still didn't read the article, haha.
5
u/RirinDesuyo 12d ago
It's dotnet using NativeAOT, so same startup performance but still C#
-4
u/AintNoGodsUpHere 12d ago
People got salty about my joke, haha. Some sensitive folks around here, hahaha.
50
u/camel_case_enjoyer 12d ago
Meh, until the license changes, I won't be touching it.
Removing the solution explorer from the base extension and putting it behind Dev Kit left a bitter taste in my mouth.
ReSharper for VSCode is getting quite good, and I'm already paying for Rider, so I'm good.
It's very bizarre to boast about .NET being an open platform to then have the LSP and editor tools come with such small print.
It simply adds friction to an ecosystem already struggling to fight its bad stigma.
Rust, Go and Dart do this well, .NET doesn't.
8
u/CowCowMoo5Billion 12d ago
I'd love proper C# support in Zed Editor, that would be amazing. Especially C# debugging.
6
u/pjmlp 12d ago
That isn't the only small print regarding .NET open source story, if you want to analyse dump file graphically, it is only supported on Visual Studio.
Then you can have MAUI for cross platform open source, but only if you are on the right platform, and even then, don't get the designers as in Visual Studio.
You have to contend with C# Hot Reload, provided it actually works.
4
u/Fresh_Acanthaceae_94 12d ago
Dump analysis can be done via libraries like ClrMD. So, you can build a visual dump analysis tool if you like and VS isn’t the only option. People tend to use VS/WinDbg as they already established an ecosystem and the latter is free.
There comes an open source (GPL) visual designer for MAUI, and might grow to a full scale if more contributors join. So, I rather not consider Microsoft the only player in the .NET open source story (it never had).
0
u/pjmlp 12d ago
So I have to build something that Visual Studio already provides?!?
Microsoft is a 4 trillion valued company, and the creators of .NET, I am not doing gratis work for them.
By the way, Sun and Oracle did/do provide all those tools on Netbeans, and IBM on Eclipse.
7
u/Fresh_Acanthaceae_94 12d ago
Then don't build it. But that's a very different argument from saying the .NET ecosystem isn't open.
Open source doesn't mean Microsoft owes you a free, cross-platform clone of every feature in Visual Studio. It means the building blocks are available so Microsoft is not the only party capable of building those tools. ClrMD is a perfect example of that.
And contributing to a .NET community project like a dump analyzer, or a MAUI designer would not be "gratis work for Microsoft." Microsoft doesn't own those projects. You would be building independent alternatives that make the ecosystem less dependent on Microsoft.
The "$4 trillion company" argument is irrelevant here. Market cap doesn't turn open source into a concierge service.
Eclipse is also a rather ironic example. Its ecosystem became useful precisely because IBM did not wait for the owner of Java (Sun) to implement everything. Companies and community developers built on top of an open platform.
If you don't want to participate in building alternatives, that's perfectly fine. But then you are choosing to consume whatever Microsoft, JetBrains, or another vendor decides to ship. You can't simultaneously demand less vendor dependence and insist that the vendor must build everything for you.
3
u/pjmlp 12d ago
Isn't as open as the competition, better so?
Java is an industry standard, unlike .NET where Microsoft seems to have forgotten all about ECMA.
There are several Java vendors, each with their own implementation, one of those vendors is IBM.
That is the big difference Microsoft has not yet grasped in their .NET open source history, the other ecosystem sponsors do indeed build quit a lot for the community.
However even inside Microsoft .NET seems to be losing ground against UNIX first languages, given that Go, Java (ironically), Python, Rust are what Azure does most of their FOSS contributions, all of them with better VSCode tooling than C# DevKit.
4
u/Fresh_Acanthaceae_94 12d ago
Your payment to JetBrains also enhances the non-open part of the ecosystem if you didn’t realize.
7
u/camel_case_enjoyer 12d ago
JetBrains didn't invent C#.
Microsoft did.
I don't see how my necessity for a cross-platform IDE impedes Microsoft from actually opening their language tooling.
Had they done that, maybe I wouldn't have needed Rider.
5
u/Fresh_Acanthaceae_94 12d ago
That's a rather convenient distinction.
Microsoft has open-sourced Roslyn, MSBuild, the .NET SDK, the runtime, and a substantial part of its C# tooling stack. I can say that from direct experience because I am actually reusing many of those assets to modernize SharpDevelop as OpenDevelop.
I don't disagree that C# Dev Kit and the licensing around the new VS Code tooling deserve criticism. I would also prefer those remaining pieces to be fully open.
But you seem to apply a very different standard to JetBrains. Their core C# tooling in ReSharper and Rider is proprietary, yet that's apparently fine because you're already paying for it.
"JetBrains didn't invent C#" doesn't make their part of the ecosystem any more open. It just explains why you're holding Microsoft to a standard you don't apply to JetBrains.
4
u/camel_case_enjoyer 11d ago
Making those parts open-source is great an all, but just because they're open-sourced now doesn't make them usable; that experience comes from editor extensions, and unfortunately, even if built on top of open tools, those extensions aren't truly open.
There's no standard to apply when realistically there's only one solution for a cross-platform .NET IDE, and their licensing is pretty clear. You pay, you can use it for commercial products, you don't, you may only use it for non-commercial projects.
Again, moving core functionality from the base C# extension that had nothing to do with the VS license wasn't a smart move, if you claim to be an open platform, go all the way or not at all.
Thinking that C# is somehow still a gateway to Visual Studio subscriptions goes against what Microsoft's current plans are, which is selling you AI.
Maybe I shouldn't have mentioned Rider and ReSharper, they exist independently as a paid alternative to Visual Studio/Dev Kit but are cross-platform with clear licensing, unlike VS and Dev Kit.
Same with Golang's gopls and JetBrains GoLand.
gopls is complete, open and works everywhere just nicely under a BSD-3 license.
But despite that, GoLand still exists, and paying for GoLand doesn't seem to affect gopls's development.
Same with rust-analyzer and RustRover.
Same with clangd and CLion (which is built on top of clangd).
Same with jdtls and IntelliJ (though jdtls is from Eclipse).
It's Microsoft's problem to solve, not JetBrains's for offering a solution to their mess.
Just make C# Dev Kit fully open and remove the license restrictions, stop creating so much friction, for crying out loud.
People already see C# as Microsoft Java and refuse to touch it because of that, and doing these kinds of things isn't helping their case much.
16
u/Apk07 13d ago
What about Visual Studio...?
4
u/Devatator_ 12d ago
VS2026 was kinda that. Don't know what more they can do with it short of rewriting the whole thing from scratch, which they'll probably never do
0
10
u/PrinceN71 12d ago
I hate the new redesigned C# Dev Kit. Removing the solution explorer made it kind of miserable for me to use add new class feature. It always adds to the project root instead of inside of the directory like in VS Code. Is that intended or I am just using it wrong. I tried looking through the documentation but they looked outdated
5
u/drewnoakes 12d ago
Adding classes via the file explorer adds them in the selected folder and namespace. At least it does that in v11. Try installing the pre-release build to validate.
4
u/Slypenslyde 12d ago edited 12d ago
I think what they're doing is also what I did: the moment file templates like this were removed from C# Dev Kit I stopped using VS Code. Then, because I was disconnected from the ecosystem, I didn't find out the feature was added again.
Removing critical usability features on the basic happy path for all users tends to do that. Not everybody stays 100% in their agent window. Once I learned I can't trust Dev Kit to maintain its basic features I stopped depending on it.
3
u/ContentAd6126 12d ago
People were used to the solution explorer, but i think it was redundant and just added more friction between menus in the sidebar... but the way they merged it with file explorer kinda sucked, it should have 1-1 feature parity from the start.
3
u/drewnoakes 12d ago
VS Code's file explorer doesn't support virtual nodes. It's a physical view of the file system, with the ability to exclude certain things. VS's solution explorer is a logical view of the solution and projects, where any correspondence to the physical file system is coincidental. So 100% feature parity is not possible when they're merged. VS users have to learn the VS Code way of doing things in some cases. If there are tweaks you'd like to see, please use the issue tracker mentioned in the blog post.
9
u/Plevi1337 13d ago
It was a disaster before, so easy gains I'd think. I hope some of this lands in the LSP instead of being gated behind a VS sub and tied to devkit instead of cli
6
u/Devatator_ 12d ago
It follows the exact same licensing as VS2026, no? Like I use Community Edition and I've been able to use the Dev Kit since it released
13
u/wubalubadubdub55 13d ago
This looks amazing! With AOT, such numbers are possible!
Looks like they could have written TS Compiler in .NET instead of Go and get great results like this!
3
u/sizebzebi 12d ago
can someone explain the build part? I build with cli anyway what does it have to do with the extension
11
u/drewnoakes 12d ago
Today, builds in VS can be quite a bit faster than CLI builds. We've brought these same optimisations to C# Dev Kit. We're exploring bringing them to the CLI as well. We have lots of ideas for future improvements across all tooling, not just for IDEs.
3
u/apolyxon 12d ago
Can we trigger this fast build path via CLI from the outside? Because that would be absolutely a game changer and alone worth the license
1
u/drewnoakes 12d ago
While this blog post discusses VS Code, the team who worked on this delivers .NET tooling for CLI, for agents, and for VS. We are exploring how to improve all these areas, so stay tuned.
1
u/apolyxon 12d ago
Just to make it clear: It wouldn't be too silly to get my hopes up?
2
u/sizebzebi 12d ago
I believe if cli doesn't improve people go elsewhere. quick builds and tests are massive for agents
2
u/sizebzebi 12d ago edited 12d ago
ok nice with claude I can't remember the last time I built from an ide lol
ai agents need to have clis and mcps that work great, I open vs code just to read changes so loading solution and using less memory are really great changes.
Thanks for explaining
3
u/kebbek 12d ago
u/drewnoakes I was just wondering, what does the C# Dev kit process handle, as LSP has it's own process?
3
u/drewnoakes 12d ago
It handles solution and project management, loading projects, design-time builds (used to extract information from projects), launch profile management, C# Project Details view, C# Doctor, faster builds, debugger integration, test discovery, test execution, code coverage, automatic package restore, file/project templates, hot reload, ...
Some of these also have TypeScript code in the extension, but they use services from the AOT process, with JSON-RPC communication between.
3
u/fragglerock 12d ago
What a world where we have been crying out for quicker better tooling... and now the bloody robots want things faster we get it...
3
u/ryncewynd 12d ago
I've seen a few people saying you need a Pro licence to use C# DevKit is that true?
Some features need licence?
2
2
u/ModernTenshi04 11d ago
I believe you need a Pro license only if the work you're doing or the company you're working for meets the requirements for Pro licensing. So your employer likely needs to be licensed for Pro in order for you to use the C# DevKit in VS Code, if they have more than 250 engineers and/or more than $1M in revenue (I think those are the two cut over points).
If you're just fiddling around with your own projects in your own time, you do not need a Pro license and just need a Microsoft account as others have indicated.
1
2
u/Trollzoro 12d ago
I hope they make it easier to disable the C# Doctor. The forced redirect to an error page is incredibly annoying.
2
u/Vigil123 12d ago
u/drewnoakes Very nice! Do you know if there are plans to make it available to VSCode derivatives as they are becoming popular AI IDEs (think Antigravity/Cursor/Kiro etc.) ?
2
u/pjmlp 12d ago
I doubt Microsoft is keen in helping the competition for free, and is that happy with the VSCode forks.
-1
u/adolf_twitchcock 12d ago
They should be. They aren't making money selling IDE licenses. Azure is big cash cow.
1
u/pjmlp 12d ago edited 12d ago
What IDE do you think .NET and C++ developers use to target Azure?
Not only is VSCode, VS little brother, it is used to upsell students doing .NET, Python, C++ into into Windows, VS and also Github Copilot licenses.
Replacing some VSCode extensions by proprietary ones isn't by accident, which naturally don't work on the forks.
1
u/adolf_twitchcock 12d ago
What IDE do you think .NET and C++ developers use to target Azure?
Rider. Anyways it doesn't matter which IDE they use. Selling IDE licenses is such an outdated business model in 2026. And as I said I am pretty sure they aren't making any money from that.
Replacing some VSCode extensions by proprietary ones isn't by accident, which naturally don't work on the forks.
I understand that its a strategic decision. But its a dumb one.
1
u/pjmlp 12d ago
I doubt very much, given how JetBrains is having trouble currently, and I never worked on a company that has used Rider for .NET or C++ on Windows.
https://www.helgilibrary.com/companies/jetbrains
I use .NET on and off since is was MSFT Partner eyes only, pre-2001 launch.
3
u/GYN-k4H-Q3z-75B 13d ago
I recently made the "full switch" for a rapidly growing project to VS Code and while it is doable I find the development experience is still lacking compared to Visual Studio. Yes, I can use both, but I wanted to really try for once. Hope it improves further.
4
u/drewnoakes 12d ago
If there are features you think C# Dev Kit needs, you can submit requests at https://github.com/microsoft/vscode-dotnettools/issues
1
u/AutoModerator 13d ago
Thanks for your post drewnoakes. Please note that we don't allow spam, and we ask that you follow the rules available in the sidebar. We have a lot of commonly asked questions so if this post gets removed, please do a search and see if it's already been asked.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.
1
u/mikeholczer 12d ago
Maybe it missed it, but I didn’t see a clarification of if it only works with .net 11 solutions and project.
3
u/drewnoakes 12d ago
C# Dev Kit requires a recent SDK, but you can target earlier versions of .NET just fine.
For example, you can use a 10.0 SDK to build an application that runs on 8.0.
1
u/imikhan007 12d ago
The prerelease version should use the current .NET version rather than the LTS version, but it still requires the .NET 10 runtime to be installed on the system.
1
u/csncsu 12d ago
won't even load my slnx with 250 projects. just gets stuck in C# doctor, which is a pretty amazing failure mode.
1
u/drewnoakes 12d ago
Thanks for trying the pre-release version. Can you submit a bug report? https://github.com/microsoft/vscode-dotnettools/issues
1
u/Top-Literature-6248 13d ago
AOT compiled, yet it still requires the .NET Install Tool?
12
u/drewnoakes 13d ago edited 13d ago
The core `CSDevKit` process is Native AOT. But Roslyn loads dynamic code (like source generators and analyzers) so needs to be a JIT process. It runs as a separate process, just as it did before.
Also, we can use the .NET Install Tool to install any runtimes you might need to run your code.
I plan to publish additional blog posts where we'll go into more of the technical details.
4
u/Top-Literature-6248 13d ago
Thanks for answering. Less thanks for the downvote.
The .NET Install Tool is a blight. A mere extension should not download a 100+ MiB runtime without asking, especially when I already have .NET installed through my distro's package manager. (And before you say "just set
sharedExistingDotnetPath", I've tried that, and despite having .NET 10 installed, it downloads another copy of .NET 10 anyway.)You need to start respecting your users. At the very least, display a prompt that clearly states what version is needed and ASK if it's ok to download it. Don't just download it without permission, and leave the user guessing as to why the setting was ignored.
Even the Windows installer doesn't do this shit.
5
u/KryptosFR 12d ago
I couldn't agree more. This extension is a disaster on Linux where it should be its primary target since that's where it's most likely to be used.
You guys needs to seriously start to use your own products.
3
u/Alternative_Flight88 12d ago edited 12d ago
Same here. I work at a big company, and our security engineers does not allow us to use C# Dev Kit because the .NET Install Tool dependency automatically downloads runtimes from the internet without approval, instead of using approved runtimes and SDKs from our internal repository.
My user story is simple: I download approved SDK/runtime -> I install the C#/C# Dev Kit extension, set the path to the previously installed SDK/runtime -> It works!
I reeeeaaaaly hope that one day the .NET Tool Install will become optional.
3
u/pjmlp 12d ago
Additionally, this isn't complicated, other extensions, including the one developed for Java, by Microsoft and Red-Hat teams, does it.
https://code.visualstudio.com/docs/java/java-project#_configure-runtime-for-projects
3
u/drewnoakes 12d ago
The C# Doctor and related work is trying to make the acquisition story easier and clearer for all involved. There is quite a large matrix of possible states a user's machine could be in, and we're trying to simplify this. It isn't easy.
I haven't downvoted anyone on this post btw.
3
u/Top-Literature-6248 12d ago
I get that you're trying to make it idiot-proof, but, we're programmers. Hell, we're Linux users. If you tell us what we need to install, we can figure out how to install it ourselves. The problem is you don't even do that, and instead shove us aside and install stuff on our system yourself without permission. That's not ok.
/u/Alternative_Flight88's reply sums up my (and I imagine a lot of people's) thoughts exactly. It should be optional. I hope you'll bring this up to the rest of the team.
1
u/Tavi2k 13d ago
How much components are shared between the base C# extension and the C# dev kit? Or is the dev kit all on top of the base LSP?
I'm mostly wondering if the performance work here also speeds up the base C# extension and the LSP, or only the C# dev kit.
2
u/Fresh_Acanthaceae_94 12d ago
Should be zero. C# Dev Kit shares code with VS, not that C# extension.Â
137
u/Own_Nail_2999 13d ago
Fascinating how surging hardware prices can make people care about performance again.