There are people on record that it was the Azure division head Scott Guthrie who gave permission to open source ASP.NET Core (which at the time was part of Azure). Later the asp.net team merged with the .net team and brought the open sourcing with them.
VS has no place anymore. The velocity and mindshare is with VS Code. VS with its visual designers had its place .. but desktop is dead and Xamarin competes with frameworks without costly IDEs.
As a very longtime iOS and Linux dev turned Windows and .NET dev (with some rust on the side) - who has used VSCode, VS, and Xamarin for multiple years - no.
There is a place for a featureful IDE with robustly implemented build, debug, and package management capabilities working out of the box with multiple languages and entrenched technologies.
I do very much like VSC and use it all the time for anything involving text, markdown, cross-platform C++, javascript, and even rust...but Visual Studio is as much of the Windows or .NET dev's toolkit as Xcode is a part of a dev in the Apple ecosystem.
VSCode is great. However, there is plenty of space for VS: it is also very strong, and has a long history of deep and extensive integration into very mature technologies. VS is still getting better year over year and while I see VSCode as competitive in some spaces, it is no contest in others. If VSCode is to replace VS, it has a very long tail of issues to address, the resolution of which would probably raise both boats anyways.
I agree, and the competition is at this point more between VS and other full-featured IDEs like JetBrains Rider, which is my tool of choice for .Net-development.
But, what I didn't know until this recent debacle, is how there is a theory that the reason the .Net-tooling in VSCode is so bad is the same reason we had this watch-debacle. There was some discussion on that in the other HN-thread: https://news.ycombinator.com/item?id=28968231
I think in this case it's more like "let's not implement something for one language".
In VS the Solution Explorer lists Project Items, not files. Eg it lists DLL References. This means the entire tree view goes through the IVsProject interfaces and you open Solutions and Projects, not folders.
VS Code works on files only and doesn't have a project system that can specify file nesting rules. The simple ask in the PR could be implemented, but it seems arbitrary and other languages will ask for their own rules. (Vue?)
I've only ever used VS for hobby/side projects, and even 10 years ago it was leaps and bounds better than what I have to use for my professional day to day work now (code completion, debugger are the two things that I miss basically every day).
The tools that I use now have these features, but they're such a joke in comparison. The code completion has no notion of "code", it's just looking for similar words.
I use VS and VS Code for different things today. VS is much better for something it's made for like a C# project with a solution/projects, and VS code is great as something that works with an existing file structure like an old Java project or a folder full of random Python scripts.
VS Code still has good code completion/etc but it doesn't seem able to match the instant responsiveness of VS.
For many workloads (at least .NET), JetBrains Rider.
For C/C++ on Windows, well, you have VS Code and also JetBrains CLion, but IMO CLion is surprisingly rougher than Rider, even though it's older. You can get stuff done though.
I'll add my 0.02$ for rider too.. it even works (in EAP) for m1 arm... I do use vs code and rider depending on if I'm debugging something on the server or need to save the small amount of ram I've got on my air for debugging in the browser.. but m1 Rider is FAST.. far faster than even rider in linux on my xps with 32gb of ram
This is what keeps me on Visual Studio. It's free for personal and open-source use, so I use it at home.
Since I know it and am familiar with it, I make my employer pay for a commercial license at work. In the grand scheme of things, it is not that expensive in a commercial setting.
VS Code is great, but I do not think it is a comprehensive replacement for Visual Studio proper when doing full stack .NET development.
Intellisense is not that good. Intellicode is missing. Managing nugget packages is not so well integrated. It's harder to debug and investigate memory leaks. I can't see code coverage in the editor or run tests with right click straight from the method I want to test.
It's usable for sure but the development it's not as fast as in Visual Studio.
I still use VS Code if I want to modify some files like XML, json, yaml, and I don't want to fire another instance of Visual Studio for that.
VS used to be heavy and bloated. But that was a long time ago. I use VS since 2010 version. It improved by leaps and bounds since then. New 2022 version is almost as fast as VSCode, if you have a good PC.
Microsoft's official C#/.NET extensions for VS Code use OmniSharp to provide IntelliSense, so I think they are becoming a lot more friendly on that front.
As others have already pointed out, OmniSharp is "good enough", but what's built into Visual Studio is still a lot better.
I get the all products pack every year personally and it's worth every penny. One of the two software packages i break my "no subscriptions" rule for, and the only one i'm not even salty about doing so.
They all kinda support editing all languages - syntax highlighting ect. but the ui/menus/tools/refactoring/etc are all tailored in each app the the desired language
I happily pay for rider license every year. When you make so much money as a dev, investing in the tool you use every single day makes a lot of financial sense. Even if it makes you 1 or 2% more productive than VS it pays for itself (in my experience the speed boost alone is so worth it)
You can use the EAP builds for free in exchange for some stability issues, which in my experience have affected me all of 0 times. You can even download EAP builds from the toolbox for convenience by clicking on Rider and switching to the "Versions" tab.
EAP is free, and the subscriptions also work as a one-time payment by giving you permanent access to the latest-at-subscription-start version when accruing a year's worth. So you can pay 1 year and not renew, and it's the same as just buying the thing.
It's not really about the cost. It's about the principle of having to pay any amount of money to be able to do development work at all with your preferred choice of OS/editor.
Attaching a price to your ability to onboard a language with your favorite workflow changes how you view that language and the motives of its maintainers when compared to the alternatives for that platform. Java has no such barrier to adoption on Linux, for example, because IntelliJ happens to have a community edition.
Visual Studio's community edition is something entirely different from IntelliJ's community edition. IntelliJ is open source[1] but Visual Studio is proprietary with tricky license terms[2] that limit it to companies of a certain size, among other things.
Note that Rider already supports C/C++ on Windows with the Rider for Unreal Engine fork. This fork is planned to get merged into mainline Rider sometime next year.
The "some workloads" also apply for that. I don't know about DirectX, but the other ones might be doable as long as you create the project once in VS and then (for MFC and ATL) hand edit the normally tool-generated partial classes. For UWP, you'd have to hand wrangle the XAML. You'd then invoke MSBuild for building. AFAIK there's nothing super special about MFC and ATL that would make debugging impossible, but it's true I've never tried it in VS Code.
I doubt that. Unless you specifically target win32 and its non-core replacements (like classic full-fat C#) there is nothing that VS has to offer that outdoes other programs.
For the non-web world specifically, the part that was Windows Server and Windows Desktop is simply a dead end outside of niches. And within the niches, comparisons are not all that relevant since... they are niches. If you have a specific job for a specific tool, then trying to compare that with something that does not meet those specifics isn't all that helpful.
Most of my C/C++ work that remains doesn't even target windows anymore since there is no purpose for it. The super small subset that does is just things like device drivers, and that's more a property of the OS than of the project itself.
I do not think Windows desktop is a niche. It doesn't have the same percent of development it used to, but in absolute numbers it didn't decline.
Many people are using the Windows desktop and many old and new software is being developed.
Speaking of which, I feel the need to rant a bit: developing for Windows using QT is much more nicer than with any MS framework. MFC is a nightmare. Windows Forms was deprecated in favor of WPF which no one cares about. From C# you can't use Direct X or Vulkan with ease.
Maybe MAUI will bring a better experience. But they need to do something for C/C++, too. Maybe buy the rights to use QT and integrate it with Visual Studio if they don't want to develop a good framework. Or buy the framework from Embarcadero (the one used by C++ buulder). But don't force people into MFC mess. I presume that even their own developers hate MFC with passion.
Winapi was ok in the 80s. MFC was ok in the 90s but we are in 2020s.
That's probably why people 'like' certain tools, they are still working inside that context or environment and then there are no other tools that do that thing well.
But that doesn't make the tool a great tool in absolute terms. That is also the problem with this type of comparison, some people come up with arguments that are tangential at best. If you use literally anything else (anything that is not winapi, win32, forms, mfc, wpf or some legacy xaml) then Visual Studio is just a limited experience at best, and a steaming pile of crap in most cases.
This goes for more software obviously, if you want to write C# but try to do that in Xcode, you're going to have a bad time. Same for when you need to write a Kubernetes controller in Go, that's going to suck really badly in VS or XC.
There are a few remaining systems that really benefit from unmanaged languages and strong OS-integrated tooling (the niches that were mentioned), but the mass development practises going on today are basically non-desktop and specifically non-windows-desktop. This means that a tool that was designed to be specifically for windows-desktop (or macOS-desktop for that matter) is unlikely to be optimised for anything else.
Windows Desktop as-is might not be a niche, but building local native desktop applications is. Even if you target Windows Desktop right now for a new application, it's likely that it's going to be some crappy CEF/Electron thing. And yes, that's crappy, but it also means you get to use much more of the knowledge/mindshare/community that is out there which is bigger than all desktops combined.
VSCode is still pretty sparse on the debugging side of things. I've tried to chase down heap corruption with it and the lack of data views, complex watch/breakpoints really limit it in that scenario.
CLion is getting there, it's not quite as good yet but was still much better than VSCode.
> The tools that I use now have these features, but they're such a joke in comparison. The code completion has no notion of "code", it's just looking for similar words.
Presumably you are not using anything built on the Eclipse, Jetbrains or NetBeans with any language they support? (PHP, Java, Kotlin, Python)
Because out of the box and without any extras all these three beat Visual Studio easily once you start doing anything advanced except GUI, and NetBeans had a reasonable story to sell even there.
On refactoring the story is if not night and day then at least dusk and broad daylight.
Try to polygot programming on JetBrains without extras, meaning managed / C / C++.
Similar to what is going on here with Microsoft, they refuse to support what Eclipse and Netbeans do for free, as means to sell Clion licenses, and then make you run two IDEs in parallel.
Correct, although for many (most?) of Jetbrains products it is free for students and one can apply for licenses for open source work.
That said, for most .Net devs I know the first thing they do after installing Visual Studio is installing Resharper just to get it up to the same level that IntelliJ (including the open source community edition), NetBeans and Eclipse (both open source) provide out of the box.
To be honest, not needing to write legacy C# and C/C++ applications have replaced VS for me.
It's not a replacement for VS itself in that regard, but the activities that used to be bound to that IDE moved on over the years.
Whenever I have to load some old project into VS, it feels old, slow and clunky compared to other tools. The limitations on the structuring on-desk, metadata, building, linking etc. are very annoying as well for projects that ended up having more than just generic Windows Desktop targets (or even if they are highly specific editions/versions). I suppose that might be because other tooling outside of the process of the 'write-debug-release' chain has moved to broader and more interchangeable concepts where VS has remained basically the same for the last decade.
I mean at this point I have truly no idea what I'm talking about. But I would always bet on Azure against Visual Studio in a fight. The earning potential for Azure is simply far, far higher than for Visual Studio. AWS has shown that the cloud is a recipe for printing money, and I trust Microsoft to follow the money.
Yes. And IMHO Azure wins. But there are managers, goals and compromises. IMHO this was a compromise. The Azure division is interested in a universal available runtime. The tooling group provides a free editor but had goals of earning VS licenses.
I can only guess but I think Big Scott, lesser Scott and Julia will have a meeting soon. The .NET community is at a boiling point and they should really avoid a community which takes dev productivity in their own hands. Because that is the garantueed end of visual studio.
> The .NET community is at a boiling point and they should really avoid a community which takes dev productivity in their own hands. Because that is the garantueed end of visual studio.
sounds like .NET is almost the kind of thing I'd use then, because in a world without Visual Studio, I might not be punished for choosing to use .NET but not VS
I've always thinked of MS as filled with old fashioned managers, caring only about legacy stuff and killing any good initiative MS Research came out with.
I was amazed they'd try something new like cloud. I thought they will stick to the desktop and and MS Office until someone will snatch it from their dead cold hands. But Ballmer went and Nadella came. I still think that the company has a lot of Ballmers hidden in a lot of places, waiting for the opportunity to pull the breaks if they sniff that something interesting might happen.
People keep saying this, but they obviously have no idea. Desktop isn’t dead and nowhere near it. Just because web and mobile app developers think so doesn’t make it true.
There are several industries in which desktop applications are a must. Any application with the needs of multiple windows automatically rules out web and mobile stacks, even if they happen to work on desktops.
I would say most industries. Anything that requires creating any kind of digital content (images, videos, CAD models, electronic schematics, chip design, PCB layout, etc), most of the scientific software, all rely on the computational power and the speed of the desktop applications.
People probably refer to generic functionality like personal PIM (which boils down to webmail, Facebook products and Google products) as no longer being desktop-based.
While there are industries that still use local compute and local rendering, that is exactly what it's about: industries. You might have image and video and audio manipulation. There could be hardware control. Maybe there is 'appliance'-like functionality such as POS and vending systems. But those aren't really the mass-desktop scenario that it used to be. That is mainly 'work' usage.
There is this section that you can carve out that does still exist in the traditional form and that is gaming. But that essentially turns the 'desktop' into a gaming console.
Legacy configurations that require things like an actual mouse pointer and multiple windows (or that dreaded MDI document-window-in-a-window interface) are generally left in two categories:
1. bad implementations
2. niche implementations
The first one means investment to fix, which is generally not going to happen if there is no commercial incentive for a commercial piece of software. The second one is a niche and doesn't represent desktops in general.
Desktop dead. That would be a nightmare scenario for me as I much prefer coding desktop based apps/games compared to web things. I code web things professionally. It's where the money is. But the fun is in desktop/mobile/console apps/games.
It would be more precise to say: Desktop business apps are dead. That is almost 100% true. Some lingering ghosts still exist.
At work we are replacing a huge app which had a C# UI with a micro service based app with a React UI.
While the backed is nice, that React UI feels like crap compared to the old UI. The only reason we are using an React UI being that "it's modern".
Not every app should be an web app.
Electron has full support for multiple windows, and you can even do it with a regular browser app if you get a little creative (windows can talk directly to other windows they create, and/or all windows could talk to the same server and receive push updates via websocket)
Can you elaborate? The last time I looked into this (including a little now) showed that, yes, you can create multiple windows, but there are not good solutions for communicating between the windows. Electron's own documentation shows two, options between local storage and Electron's IPC mechanism. From what I've read, IPC is not good for more complex multiple window apps. So one needs to use a local network communication method.
And old apps written in C++ and running on a Pentium 3 will beat the crap out the Electron app which will feel sluggish even on modern hardware.
The only reason Electron exists is to enable Javascript developers do desktop apps without learning other languages and frameworks. Electron is not a solution for desktop development, it's a solution for lazy developers.
As a long-time .NET Developer, there's no way in hell you're replacing my Visual Studio with Visual Studio Code. I'll sooner switch to Rider (which I have a license for and like to use on a Mac.) VSCode is a text editor on steroids. Visual Studio is an IDE. Full stop.
I'm in the same boat. I use VSCode for JavaScript and that is only because I'm required to by my workplace. Otherwise I'd be using Webstorm.
VS is on a whole other level than VSCode when it comes to C#. I suspect that many people here haven't really used the IDE features and VS' debugger for more than simple breaking and inspecting a variable.
Yes, if you have a hobby project, you can use VSCode instead of VS Community Edition just fine. But if you are dealing with concurrency errors, performance analysis, dump analysis, and very, very large projects, you can't use VsCode. VS' GUI is also a lot more flexible than VSCode's. In VS I can have a lot more information present where in VSCode I need to constantly switch windows.
There's some new smart code suggestion features on VS2022 that I've never seen anywhere else before. But talking about VSCode, it depends. For C# development it doesn't replace VS at all, far from it. Omnisharp is not good enough. There's scenarios and scenarios. I code game development things with C# on VS. And I work professionally coding JS stuff with VSCode. Different scenarios.
I use the community version. VS Code, while being extremely good, is still far behind VS. I love using VS, as a solo developer. The integration it has WRT .NET projects is amazing.
VS Code is not a replacement for an IDE. While I only know IntelliJ, I assume VS must be similar. In short, VS Code is a replacement for Notepad, and not for an IDE. It's not as well integrated, not as thought-out and capable. The only thing that saves it IMO is the remote server mode.
VS is my daily driver and I absolutely agree that VS Code doesn’t come anywhere close to a fully fledged IDE like VS.
But VS Code is far more just a text editor and that you can run and debug many languages in it in my opinion means it meets the criteria of an IDE.
If I was forced to switch from VS to VS Code I would be miserable and feel handicapped, but infinitely more productive than just having a text editor and the dotnet CLI.
So VS Code is absolutely a “replacement” for VS, but only for a poor man with a very limited set of required features.
All the above being said, I don’t ever see VS Code truly replacing VS, but it’s a competent IDE considering its both cross platform and free as in beer.
Visual Studio does a lot more than just visual designers. The integration for .NET is fantastic. And I love Visual Studio Code for everything else :) Visual Studio still has value.
Visual Studio's debugger alone makes it worth. It's not that it's the most powerful debugger (not like WinDbg), but it's so polished for most things I would typically do, also mixed callstacks for certain languages, Parallel Stacks and certain other features.
I still like very much the experience of developing on Visual Studio. And it's not about visual designers because I don't do Windows Forms and WPF. Intellisense and intellicode do a wonderful job with code suggestions, there are lots of tools for formatting, debugging, jumping through code, refactoring, each accessible through shortcuts. It makes the development much faster for me compared to using a text editor.
And when .NET MAUI will ship, I guess we will have a visual designer for that.
VS has enabled fast and lazy development for me. I don't have to memorize if a type has a method or property or what parameters a method has. I just type a dot and the IDE will tell me everything I need to know. It's good for concentrating on business logic instead of details of frameworks and libraries, but less good for interview questions if you come around people which have fixation on details.
Desktop for the bulk of generic CRUD apps is dead. But that has always been the case because that's not the main benefit of having a desktop.
Same for 'what was your first computer', there is a whole generation (or maybe two of them at this point) that started out with smartphones and didn't get to the 'using a desktop' level until much later when preparation for work life required it.
VS has no place anymore. The velocity and mindshare is with VS Code. VS with its visual designers had its place .. but desktop is dead and Xamarin competes with frameworks without costly IDEs.