20 ms·
Understanding the .NET ecosystem: The evolution of .NET into .NET 7
- tiffanyh 4y agoIt’s a tired thing to say, but the “.NET” naming is so confusing on what’s what. Which is sad because there’s so much to like about .NET
- justeleblanc 4y ago> It’s a tired thing to say, And yet, here you are, right on the dot. First comment on any .NET thread.
- celdon25 4y agoAnd in a thread about an article that explains the very thing commenter is "confused about"
- T-zex 4y agoIsn't it with .Net 7 it becomes simply .Net and confusion with Framework, Standard, Core is now gone?
- SketchySeaBeast 4y agoYes. Has been that way since 5.
- kgwxd 4y agoWhich specifically wasn't named .NET 4 because that would be confused with .NET Framework 4.x :) Which I'm currently stuck on for work :(
- SketchySeaBeast 4y agoAssuming you're not looking at legacy and are on .NET 5.0+ it's not confusing, it's just the one ecosystem, no core or framework stuff, just .Net. If you're before that, well, good luck.
- Anon4Now 4y ago> no core Except the docs, which still say core all over the place, including the url's. ;-)
- deleted 4y ago[deleted]
- yread 4y agoIsn't Java world a lot more confusing? You have Java language, Java compiler, Java class library, Java Virtual Machine, Java bytecode, Java runtime environment, Java development kit (OpenJDK - is it open? how many forks are there?), Java SE, ME, EE, JavaBeans. What can you use where, what is the license, who made what, what role does Oracle play? So many questions in a universe where google doesn't exist to clear up confusion, no?
- javamanfossils 4y agoThese are different things: JDK already includes an implementation of API, compiler, and runtime. OpenJDK has many builds, not forks. Java EE is now known as Jakarta, and "Enterprise JavaBeans" were replaced by Spring. Clarifying just in case; otherwise I agree that the ecosystem might be confusing, especially if you consider the historical development and legacy code.
- Kwpolska 4y agoI Googled “.NET assembly loading”. The second hit is “Understanding How Assemblies Load in C# .NET”, [0], from July 2020, 4 months before the RTM release of the unified .NET 5. While this post mentions .NET Core by name once, this post is completely irrelevant to .NET Core/5+ (which threw out the Global Assembly Cache, assembly redirections, and generally simplified everything). How do you find articles that are actually relevant to the modern .NET and not the Framework? The Java stuff is easy. From the perspective of a Java developer, most of the things you listed (except for ME, EE and JavaBeans) are just “Java”. And they always have been. [0] https://michaelscodingspot.com/assemblies-load-in-dotnet/ https://michaelscodingspot.com/assemblies-load-in-dotnet/
- pyjarrett 4y ago1. .NET "Core" ... I tell myself "C is for Cross platform." This is usually what people seem like they mean now when they talk about ".NET". 2. .NET "Framework" ... I tell myself "F is for Former." This is the older, Windows specific version. 3. .NET "Standard" ... I tell myself "S is for Specification." This is just the spec which defines what Core and Framework must implement.
- tiffanyh 4y agoThat’s super helpful, thank you. Where it still gets a bit murky is: > “ .NET has many different implementations, including the .NET Framework, Mono, and Unity. Each of these is a separate platform with separate Base Class Libraries (BCLs) and app models. .NET Core is another separate platform.”
- simooooo 4y agoYou don’t really interact with or care about mono as A normal c# dev
- WorldMaker 4y agoMono is almost entirely merged in .NET 8. Very few parts of "mono" exist now as a separate runtime.
- doodlesdev 4y agoWhat about Mono and Unity?
- pyjarrett 4y ago"Mono is an open source implementation of Microsoft's .NET Framework." [1] Unity looks like it uses its own fork of Mono, or IL2CPP, which is a fancy thing that converts the intermediate language produced by C# into C++ code, which it compiles. [2][3][4] [1]: https://www.mono-project.com https://www.mono-project.com [2]: https://docs.unity3d.com/2023.2/Documentation/Manual/overview-of-dot-net-in-unity.html https://docs.unity3d.com/2023.2/Documentation/Manual/overvie... [3]: https://docs.unity3d.com/Manual/IL2CPP.html https://docs.unity3d.com/Manual/IL2CPP.html [4]: https://docs.unity3d.com/Manual/Mono.html https://docs.unity3d.com/Manual/Mono.html
- thenerdhead 4y agoIf you could rename it, what would it be and why?
- smcl 4y agoAnother good question would be - if you were Microsoft and wanted to plan a roadmap to take the .NET ecosystem forward from a couple of separate implementations (Windows-only .NET Framework, Cross-platform Xamarin) how would you go about this in a way that doesn't cause a big furore like Python 2->3 did? Because I imagine you end up with what MS did - define a standard that can be used for building common code between new/old, continue support for both, quickly iterate the new while it's still new, be very open about support timelines and document everything pretty thoroughly. You'd just end up with a different set of names for that standard (.NET Standard), and new implementation (.NET Core) that make sense to you, but probably still confuse some people. I don't think it's perfect, but .NET developers will (or should) all grasp the relationship between .NET Standard/Core/Framework (and now plain ".NET") pretty easily.
- Jochim 4y agoThe only frustration I've experienced in actually working with it is that it leads to polluted search results. Trying to find solutions to ASP.NET Framework problems usually requires discarding a whole bunch of irrelevant ASP.NET Core/.NET ones. It's the same with Visual Studio/Visual Studio Code.
- thenerdhead 4y agoThis is a similar problem with ChatGPT and AI in general. While some things may not change much, you can't generally say "how do I x in .NET" without the chance of getting a really old answer.
- Jochim 4y agoBeing more specific is definitely helpful. I've found that ChatGPT is less frustrating than DDG/Google, probably just due to the conversational nature. You can ask ChatGPT to correct itself if it doesn't give the answer you want. e.g. "Could you write that using .NET 7" or "Use <.net7 language feature> to solve the problem". Whether it spits out the correct answer is still up to chance but the narrowing does seem to work quite well.
- andix 4y agoIf you start now, you can ignore everything before .NET 5. And then there is no confusion left. Just don’t read any tutorials/documentation that were written for an older .NET version.
- hdlothia 4y agoI love c# and dotnet. I've been holding off on flutter and praying Maui becomes a real thing
- bitwize 4y agoAvalonia is a real thing and works quite well.
- noveltyaccount 4y agoUno Platform is another popular one. (I haven't tried either.)
- 0xDEF 4y agoNorthern Europe runs on C# and .Net. I am not joking. There are more C# jobs in Denmark than Python, Node.js, Ruby, and PHP jobs combined.
- teruakohatu 4y agoSame in New Zealand.
- bitwize 4y agoBoth of those places used to have craptons of mission-critical Delphi code. Going to .NET seems a natural transition from that.
- o_bender 4y agoIt is surprising to me that C# and .NET is comparatively under-represented in North America where it was born. Nothing but good experience in developing and operating software with it, both desktop apps (Win/Mac) and backend services (Linux).
- solarkraft 4y agoI like .Net and C#, but I've had a lot of experiences that were not good. I personally hated working with Visual Studio 2017. 2019 was an improvement, but one so small it was still awful. I recently used it again (2021?) and was cynically surprised that they FINALLY got scrolling that isn't forcibly line-based. Why did they even bother now? This and some other small things that used to make the experience painful are now solved, but they still haven't really gotten on top of the freezes and crashes. Visual Studio being bad is one thing, it being the only officially supported IDE is the other. They should not only officially support third party efforts like Jetbrains Rider, in the past I've gone as far as saying they should discontinue Visual Studio in favor of it. Now for the nice part: Almost all "new .NET" announcements/tutorials focus on VS Code, an IDE that sucks a whole lot less. On another note: Transforming a 20 line T4 template took 4-5x as long as the actual compilation on the last .Net project I've seen.
- rbanffy 4y agoI am mostly a Python person, but I must confess I'm impressed by both modern .NET and Java's Spring Boot. I architect for two teams, one using Java, the other using C#, for building services and the amount of boilerplate code, that used to be a huge turnoff for me, has been impressively reduced. There's still a lot, but it's now more or less comparable to what you'd expect you'd end up with on a similar app built on, say, FastAPI.
- nonethewiser 4y agoIsn’t there still lots of boilerplate, it’s just generated for you?
- brushfoot 4y agoThe boilerplate is pretty minimal nowadays. In 2020, C# introduced top-level statements, which removed a lot of the ceremony. You used to have a class, and there would typically be a separate Startup.cs file. Today, this is a complete .cs file for creating an API: var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run();
- older 4y ago"Hello world" is a one-liner Since .Net 6.
- nirav72 4y agoNope. Take a look at Minimal API in .net 6 and onwards.
- bmitc 4y agoI'd recommend taking a look at F#.
- deleted 4y ago[deleted]
- cyral 4y agoBeen using .NET for years now for backend web development after having taken a break from C#. It is such an improvement over the old .NET framework. When I started building my first backend with it, I was surprised how much was included and "just worked". Need to add authentication? Few lines. OAuth? Also built in. Response caching? Yes. ORM? EF Core is pretty good. Need to use env variables to override your JSON config? You are going to have to build a... just kidding that works with one more line too. Coming from NodeJS, the amount of stuff that could be added with a single line from an official package was great. No more worrying about hundreds of unvetted dependencies.
- sylens 4y agoIt really is like finding enlightenment after having to figure out which third party package is best for every little thing in Node. Visual Studio is a pretty powerful IDE as well.
- LelouBil 4y agoJetbrains Rider is great for .NET too, although I didn't try backend developement with it.
- alexzeitler 4y agoI’m using it for backend work day in and day out and it’s a joy.
- andix 4y agoIt’s awesome. What I enjoy most is, that all the different tools feel the same, and you can use the same kind of IDE also for web developmen, JavaScript and SQL. Rider also has webstorm and datagrip bundled as a plug in, so you can also do everything in one IDE. I prefer though to use the standalone tools for that, they have just less features than rider/IntelliJ, but i would consider that a plus. Less menu items, less tool windows.
- cyral 4y ago
- deleted 4y ago[deleted]
- pmoriarty 4y agoAs a fan of O'Caml, I have to ask: what's the status of F# on .NET? ...and is it used much compared to C#, or is its use at least growing, or is it stagnating/dying?
- pavelbr 4y agoSeems to be about the same as it's ever been. Still being updated and worked on, and still very few people use it.
- pyjarrett 4y ago> Still being updated and worked on It is, hands down, my best experience working in a functional language. I do hobby work in it, and it seems super nice, but I'm not sure where everyone is. > still very few people use it. Looking at a chart of GitHub and StackOverflow usage[1], OCaml/F# seem almost steady compared to the other functional languages, my suspicion is that Rust absorbed a lot of programmers looking for functional concepts in programming languages. [1]: https://tjpalmer.github.io/languish/#y=mean&weights=issues%3D1%26pulls%3D1%26stars%3D1%26soQuestions%3D1&yscale=log&names=haskell%2Cclojure%2Cf%23%2Cscala%2Crust%2Cocaml https://tjpalmer.github.io/languish/#y=mean&weights=issues%3...
- evntdrvn 4y agoyeah I’d say usage has been steady, maybe with a slight uptick in interest it feels like. It’s a great platform, in some ways it’s like a secret weapon… I joke that F# is kinda “easy-button Rust” lol
- throw8699 4y agoMy impression - the people who use it historically (and I've met a few) aren't the companies that typically proponent open source software and the like. They are "closed source" shops (e.g. finance, insurance, etc). Even I am not willing to post on more than a throwaway account. I'm currently using it for large scale production systems in a very large public company powering a large data volume product with very high peaks of customer traffic and it works a treat. We decided to try C# 9 after some F# because "higher management" - compared to F# the dev's have found it verbose and painful still, despite the new features. The productivity benefits are small and sprinkled - I don't personally think there isn't one "killer feature/app". It isn't just one thing, its little things that add up. Given the team jumped from other ecosystems (e.g. Go/Node/etc) they found F# easier to approach than C#. This is the perspective of the team I run and it comes up in PR comments (I do less code writing these days). Comments like "don't have to do this in F#", or "we need a framework for this because C#" are known to occur. Easier unit test writing, less dep injection headaches, concise function passing, easier inlining of math for perf, easy mocking/stubbing, unions, etc etc. The big weakness to me is that the people that use it typically don't want to flaunt it, and that means good mentoring, the best/simple patterns to use, etc and management buy-in are not really public. Communities that you can join are not into large scale apps, meaning good scalable patterns and lessons learnt are hard to find.
- lp0_on_fire 4y agoI love the new dotnet ecosystem and use it professionally but am I the only one who thinks two years isn’t long enough for a “long term support” release? Obviously you’ll be able to run older versions of the framework so long as the underlying OS supports it but depending what type of environment you’re in this means you’re likely going to have to update perfectly working applications every two years. Do I think that it will take a massive amount of work to update from dotnet 6 to 8, or 8 to 10 in a few years? Probably not, but that could change at any time depending on the whims of Microsoft on that particular day. I get that the current technical zeitgeist is that if you’re not releasing a new version every other day you’re falling behind but five years seems a bit more reasonable to me.
- rvdginste 4y ago> but am I the only one who thinks two years isn’t long enough for a “long term support” release? No, I feel the same. It really is a completely different mindset compared to .net framework. And I believe it is recommended to keep upgrading, even in maintenance mode. I noticed that Microsoft removes target frameworks from their nuget packages as soon as they are no longer supported. That could be problematic if you need a security update and are on a no longer supported target framework. An “enterprise” environment that is used to Microsoft products is not used to that.
- danroth27 4y agoYou actually get three years of support from .NET for Long Term Support (LTS) release. You can find the full support policy here: https://dotnet.microsoft.com/platform/support/policy https://dotnet.microsoft.com/platform/support/policy
- evntdrvn 4y agoThe upgrade process from 5 to 6 to 7 has been a total breeze, and I’expect things to continue in that matter. There was a massive amount of churn between the introduction of .NET Core and Core 3, then 3 to 5 was quite a bit less so, and since then it’s been a non-issue. Pretty much just flip a version flag and get new features.
- cm2187 4y agoI'd be curious to know what is the actual adoption of .net core. I.e. of all the actively developed applications (not just new projects), what is the .net core / .net framework split. I found that the upgrade process is not seamless. Asp.net core has little to do with asp.net MVC. Winform introduced all sorts of contraints. The BCL is full of small changes or features missing. People are less vocal than for the python schism, but I'd expect a lot of projects to be stuck on .net framework, not the least because of incompatible dependencies. Nullable reference type is another massive breaking change coming if they make it more than a compiler warning, which I suspect is the long term intention. Not breaking your users used to be a laudable goal of the .net team. I miss it.
- jve 4y ago> Not breaking your users used to be a laudable goal of the .net team. I miss it Is it that bad once you are on .NET Core? Asking as someone still on Framework. Framework -> Core ofcourse is breaking, what did you expect when going cross platform and totally rearchitected?
- cm2187 4y agoI am sure cross platform is useful to some users but not to me. So to me it's all breaking changes for little benefits. I am not saying .net core is bad, just that the migration is a lot of work. And you need to disable all sorts of compiler warnings unless you are ready to rewrite pretty much all your code to make it nullable ref type friendly. And some day those warnings will be errors.
- Kwpolska 4y ago> And you need to disable all sorts of compiler warnings unless you are ready to rewrite pretty much all your code to make it nullable ref type friendly. Not really. Just disable nullability checking — you can do it project-wide by removing the Nullable tag from your .csproj, and you can continue ignoring nullability. > And some day those warnings will be errors. [citation needed]. A lot of code is written without nullability in mind. That includes the .NET Core BCL, AFAIK.
- brushfoot 4y ago.NET has been doing a lot of things right. My startup's codebase is nearly all .NET 7: landing page, web app, Windows service, API. The main non-.NET code is vanilla JS in the web app. I've been keeping a close eye on Next.js, which is very well done, but I love how versatile .NET is. With one language, I can write all of the above, and my dependencies are minimal thanks to .NET's rich standard library - a refreshing change from the NodeJS apps I've written and maintained. With native AOT, .NET can even be compiled to native binaries. Recently, I wrote a Windows password filter DLL in C#, which would have been unthinkable some years ago. It's a really enjoyable stack to work with. Kudos to Microsoft for what they've been doing with it.
- twodave 4y agoFortunately NextJS and .Net isn’t strictly an either/or proposition. I’ve moved most of my new front-end development to NextJS at this point and use C# for most everything behind it.
- donny2018 4y agoA few years ago, the authentication/authorization story was quite tough to configure in this setup. Did things change recently?
- twodave 4y agoIt really just depends on what you're trying to do I guess. The main auth boundary for my projects is typically the server gateway/api, and that's very straightforward to set up, whether you want simple auth or role-based or to inspect JWT claims or whatever.
- waboremo 4y agoNextjs (and its contemporaries) work really well with .NET. Toss in your API calls into Next, write a beautiful front end, and now you've got separate front end and back end that works phenomenally together and can be tested separately using their strengths. I'm more shocked by you sticking with Javascript. Surely with your adoration of C# you would have moved to its closely related sibling Typescript. Although I guess there is that slight initial hump to move to TS from a purely vanilla project.
- deleted 4y ago[deleted]
- jiggawatts 4y agoMy big problem with .NET is that a lot of line-of-business apps were written using ASP.NET Web Forms, but there is no upgrade path other than “rewrite most of it”. It feels like the pain everyone went through upgrading from Python 2 to Python 3. It also doesn’t help that .NET Framework has its support cycle tied to the OS, and hence is 10+ years. This means that businesses can be lazy and just leave these old apps to fester and still be technically “supported”. As web standards evolve, I’m seeing these web apps slowly break. It’s actually a big problem and Microsoft doesn’t seem to care much. It’s only in .NET 7 that they’ve finally introduced some incremental migration features, but they’re buggy and incomplete. As a random example of the issues: .NET Core 1.0 broke DataContract deserialisation because of a missing thing in the BCL. A decade later this is present now but they still haven’t fixed the service client generator tool! Every time I’ve tried to migrate an app, it’s one breaking issue after another with 3-year old GitHub issues that have no responses from Microsoft. Talking about the awesome future of .NET is great and all, but you've got to give people a path to get there...
- Kwpolska 4y agoASP.NET Web Forms are a complete trainwreck and an abuse of HTTP and other basic web development standards (e.g. by using javascript: URLs and POSTing forms for every single interaction with the page). It is broken by design. ASP.NET MVC 1.0 came out in 2009, there was plenty of time to modernize those apps.
- Someone1234 4y agoI'm not sure you're addressing anything the comment above said. Their complaint was that people invested a lot of resources into a technology that Microsoft promoted, and then that technology hit a dead-end with no good upgrade path aside from "rewrite it all!" What year that occurred is irrelevant. Ironically you brought up MVC 1.0, which Microsoft did EXACTLY THE SAME THING TO, when they released Asp.Net Core MVC which also has no direct upgrade path. In fact, it wasn't until the last twelve months that Microsoft even tried offering anything when they realized it has been ten years and a lot of companies remain stuck to this day on .Net Framework. Yes, Web Forms was poorly designed. But this is about Microsoft's poor upgrade offerings more than any specific technology, and an import lesson for people investing time/resources into Blazor today (given that it uses a proprietary WebAssembly compilation system and a proprietary back-end not dissimilar from WebForms in terms of lock-in).
- Accacin 4y agoOdd question maybe, my company uses C# and I've been picking up more backend responsibilities. However, I'm a Linux and Neovim user. I do have Windows and Visual Studio available but I just find it awkward. Is anyone here having success with Linux and Neovim for C#? Even trying to learn more about the language is awkward as so many resources go straight into VS.
- noveltyaccount 4y agoCan't comment on neovim. VS Code works well on Linux for another option.
- simooooo 4y agoI’ve been using Rider in Ubuntu for a year or so, and not really missed VS. Only once when looking into the identity UI templates which required some scaffolding stuff in VS.
- alexzeitler 4y agoI’m using it on Xubuntu with Rider as well. I’m using the CLI to scaffold identity including UI.
- Loocid 4y agoI strongly recommend Rider, even for those using Windows. It's a great piece of software.
- pjmlp 4y agoWhy pay for half of the experience of IDE from the OS vendor, specially when having MSDN licenses already paid for?
- Loocid 4y agoWhat half is Rider missing? And of course you should use VS if you're getting it for free while having to pay for Rider. I find Rider a much more smooth experience than VS. It's faster in almost every way (loading solutions, searching, etc).
- edandersen 4y ago[flagged]
- rjbwork 4y agoWhy does a non technical person care what version of .NET an application is on?
- sumedh 4y agoThey are writing the cheques, so if you tell that person upgrading from 4 to 5 is very complicated, needs time and money they will probably think something is fishy.
- dragonwriter 4y ago> You now have “.NET 4.8.2” applications that cannot be upgraded to “.NET 5”. Try explaining that to a non technical person. “A common convention in software is that new major version number of a platform indicates that software from earlier major versions may require changes, often quite significant, to function” is pretty easy for non-technical people to understand.
- mihaaly 4y agoUsually non-technical persons do not give a faint fart about 'major' 'version numbers'. Is it a thing or goes somewhere? Yet about 'platforms' and 'sofware conventions'. Is it working or not? Usually that's what they care about. So it was ok in the old system but now there is an improved super shiny trendy best superpower new one and the previous ok is not ok anymore? [puzzled faces]
- dragonwriter 4y ago> Usually non-technical persons do not give a faint fart about ‘major’ ‘version numbers’. This type of user is actually usually, IME, easier to explain it to: “It’s a different platform and our software will not work without changes”. The less they “give a faint fart” about details, the easy it is to tell them the effects and have them accept and move on. At most, you might occasionally need to invoke a car analogy: it’s like trying to use accessories designed for an older model year, when there has been a design change between model years – some things just don’t fit right anymore.
- shrubble 4y agoDoesn't run on Solaris and doesn't run on FreeBSD. An 'LTS' release means ... about 3 years. No thanks...
- stevefan1999 4y agoIt is expected to have preliminary FreeBSD native build in .net 8. There are already PRs for that
- bearzdev 4y agoLTS releases are every 2 years and there is a major version release every year. .NET 6 LTS .NET 7 .NET 8 LTS FreeBSD support has been in the works for a while: - https://wiki.freebsd.org/.NET https://wiki.freebsd.org/.NET - https://github.com/dotnet/runtime/issues/14537 https://github.com/dotnet/runtime/issues/14537
- shrubble 4y ago"Long Term Support (LTS)—These releases are supported for three years from their first release." From my perspective, this is not "long term" ; but maybe others view it differently.
- seabrookmx 4y agoHow relevant is Solaris these days? Does it even make sense for them to add support when such a tiny fraction people would use it?
- shrubble 4y agoIt is still used by some, but most importantly it shows a lack of portability. In the past the view that "all the world's a VAX" hampered portability, now we have "Everything is MacOS/Windows/Linux"... yet lots of properly designed software is easily ported to all kinds of platforms, even the BeOS-derived Haiku...
- seabrookmx 4y ago
- zigzag312 4y agoImagine it like a Git repo. Old .NET Framework was a main, Windows only, branch of .NET. At tag "v4.x", a new branch named 'Core' was created. Core was a multiplatform version of .NET. There were three tags in the Core branch: v1, v2 & v3. Then Core jumped from v3 to v5 and was merged back into the main branch. ".NET Core" has replaced ".NET Framework". Also, v5 dropped 'Core' from the name and was named just ".NET 5". Development now happens on the main branch and has already reached tag v7. A new tag is created each year.
- deleted 4y ago[deleted]
- PantaloonFlames 4y agoThis is a very helpful analogy. Thanks.
- great_cormorant 4y agoI spent a lot of time as a Java developer and have recently moved into a spot where I'm being asked to work with C#. A few things rub me the wrong way, and I'm wondering if it's just ignorance and / or me being stuck in my old ways. - Unit testing with mocking is kludgy compared to Java and Kotlin (Moq vs Mockito). There's no mocking of concrete implementations for technical reasons, perhaps unless you shell out money for a paid product. This leads to folks putting interfaces everywhere so that code is testable. - Along the lines of the above, everything feels a lot more corporatized or tied to Microsoft. The open source ecosystem and tooling around C# isn't to the same level of the JVM langs. - The project structure feels odd. Solutions hide a lot of files from you, whereas JVM langs generally show what's actually there. When it comes to actually writing implementations, I don't mind it, and it's far ahead of, say, Java 8. ASP.net might even be ahead of Spring in a few ways. But with Java 20 and Kotlin around, I don't feel compelled to move to it as a new default.
- bearzdev 4y agoThere are other libraries than Moq. Nsubstitute, FakeItEasy, etc. With Moq and most mocking libraries, you generally just need to make a method virtual for mocking concrete classes. Most mocking libraries use Castle Project's Dynamic Proxy, so they should be able to inject things without the need of interfaces. Interfaces for everything comes from the .net community's obsession with patterns, abstraction, clean architecture, and DDD. You can use vscode with file based projects. With Rider/Visual Studio you can show hidden folder so long as they are in a folder or subfolder of a project. Otherwise, you'll need to add a solution folder and items to the solution folder.
- great_cormorant 4y agoRight, marking methods as virtual is the other route I saw. Are most C# codebases opting to do that rather than add interfaces? It feels weird to edit signatures like that for testability, but maybe it's just what I'm used to - I'm putting all of my objects in constructors already for testability's sake, and I'm no stranger to making a factory or two. VSCode has been my way forward for file-based editing so far. It's not so bad - just feels like I'm doing things that I ought not to be when I'm searching for DLLs or a random "scripts" folder in the root folder of our repo in Rider. In IntelliJ IDEA, all of the folders are just sitting there, ready for quick edits. I think C# overcommitted on interface-driven design. It's good in some instances, but the more I work in code the more I think that the majority of it is needless and oftentimes harmful to maintaining a healthy code base. Thanks for the pointers! Nsubstitute looks cleaner than Moq at first glance.
- menacingly 4y agoI'm traditionally about as far from a "microsoft ecosystem" dude as it gets. The first MS anything I've touched in my career has been the last year or so in csharp, and I love it. Great performance, excellent language, sane architectures. ASP.net is awesome for APIs. I use Rider from Jetbrains, develop on a mac, deploy to Linux on AWS, it would blow the mind of 2003 me to know this was the case.
- PerfectElement 4y agoAny tips on how to migrate a very large ASP.NET MVC app (framework 4.8), that is still in active development, with tens of thousands of users, without a complete feature-freeze? Am I able to migrate to .NET 7 in small increments over a long period?
- thatnerdyguy 4y agoThe devblog had a post on something about that last year: https://devblogs.microsoft.com/dotnet/incremental-asp-net-to-asp-net-core-migration/ https://devblogs.microsoft.com/dotnet/incremental-asp-net-to...
- JenrHywy 4y agoWe have a similar sounding app in terms of scale. We just bit the bullet and a couple of us spent a few weeks doing the upgrade in one branch while the rest of the team worked in another. We'd periodically merge in to the upgrade branch and tweak things as needed. It wasn't too bad, really. Mostly it was updating any new controller methods to use the new attributes. We originally planned to upgrade incrementally (one project at a time) but to be honest, it looked that was going to be far more fiddly and annoying that just doing the full thing.
- peefy 4y agoAs a developer who has been using .NET for many years, C# has given me unprecedented pleasure and efficiency in programming, thanks to a copy of C# code that can be used simultaneously for Linux, Windows, MacOS, Android, iOS, excellent tools, and IDE support. C# is still one of my favorite programming languages (including syntax, semantics, and standard libraries). Although it is a bit complex now, it has also created many excellent designs such as async, await, and so on. VS and VS Code are also IDEs that I still use today, although I rarely write C# code.
- JaggerJo 4y agoF# also is kicking ass. Were running .NET 6 + F# in production with ~4 developers and its been a breeze.
- madarcho 4y agoExactly the same boat. About to switch to a C# role, so not exactly a world of difference, but I am going to miss F#. I can't help but feel that the success of our small team is majorly down to F# and the traps it helps you avoid.
- billfruit 4y agoWhatever happened to Xamarin? It is still tied into this ecosystem?
- WorldMaker 4y agoXamarin merged into .NET and got rebranded MAUI ("multi-platform application user interface").
- kcartlidge 4y agoFor anyone unfamiliar who just wants to see something running, then assuming the DotNet Core SDK has been installed (see https://dotnet.microsoft.com/en-us/download https://dotnet.microsoft.com/en-us/download) the following creates a folder, a solution, a minimal web API (4 lines of code), and starts it running. mkdir MyApp && cd MyApp dotnet new sln -n MyApp && dotnet new web -n Api dotnet sln add ./Api/Api.csproj && dotnet run --project Api Many devs would want more features out of the box so they'd replace "web" in the "dotnet new" command accordingly (use "dotnet new list" to see the options, eg mvc, grpc, or react). But this is the minimalist option just to 'get something running'. Edit: For background, new sln creates a new DotNet Solution and new web creates a new (minimal) C# web Project. Then sln add tells the new solution that the new project is part of it.