Hacker News new | comments | show | ask | jobs | submit login

Every time I try to get a quick feel of .NET on Linux, I allocate an hour to it and that hour is always spent wandering around various guides on microsoft.com and never getting anything done.

There are terms like .NET Core, .NET Platform, .NET Framework, .NET SDK all mixed up on nearly every page, multiple versions of "Getting started" and "Quick start" guides, massive navigation menus and options on every page so you never know if you're looking at the latest and greatest or it's some kind of abandoned dark corner of a web property, as it often happens with corporate sites.

Yo! If you want .NET to be a massive hit on non-Windows platforms, move it off Microsoft.com to a small site, have a single version of "getting started" (and only one "guide"). Don't ever mention things that exist and don't work on Linux.

Like this: https://golang.org/doc/

Also, have a simple downloadable .tar.gz which expands into /bin + /lib + /examples. I loved C# back in my Windows days and I moved to Linux to escape Microsoft complexities and over-reliance on complex IDEs and tools, scattered like shrapnel all over my c:/

I will not run apt-get against your repo without knowing ahead of time what I'm getting and where will it all go, so let me play with the tarball first.

[EDIT] formatting

Great points all, especially about the "simple downloadable .tar.gz." We will fix that. Until then, I wrote it up for you.


Thanks, Scott. This is another great example of Microsoft doing it right.

To be fair, the new https://docs.microsoft.com site is much better than the old ones, but I know what you mean. I still occasionally get confused at all the .NET nomenclature, and I wrote I book on the topic.

I gave a talk at the London .NET user group earlier this year on why it's all so hard to understand. Maybe it will help clarify some things, however it was before the 2.0 announcement: https://unop.uk/on-asp-net-core-and-moving-targets/

Yo! Great point! In fact current dotnet core site was hugely inspired by golang one (IMO). Just take a look: http://dot.net/ There's also a great 20 lesson in-browser interactive tutorial (there's also F# and VB version!): https://www.microsoft.com/net/tutorials/csharp/getting-start... I'd also like to stay on this cool dot.net domain though, microsoft.com might scare people.

And there's other open source project like mine github.com/dodyg/practical-aspnetcore

My experience has largely been the same, the whole mono, xamarin, vs studio, etc of tooling (whatever it all is) is a tragedy of good technology made useless. The licensing, tooling, and runtimes are such a mess I give up before I begin. There needs to be one canonical way to do things on every platform, this "band-aid" approach might've worked when you first open sourced but surely no longer does the job.

I'd love to use .NET but the overhead of getting started isn't worth it when I can use any number of other truly free languages/platforms that are much easier to understand. And are truly cross platform because they have been so for years.

For reference languages I use regularly or on occasion which don't suffer from any degree of the issues .NET has: ruby, swift, elixir, java, scala, JavaScript, and Elm.

CLR and .NET seem very awesome but so far have turned me off in a big way. Please fix <3

>this "band-aid" approach

I've been putting food on the table as a .net specialist for fifteen years. My impression is that .Net 4 is a band-aid of Windows-dependent implementations and that .Net Core is some solid tech, using industry's best practises for streams, collections, GC and so on. How do you think they made it portable?

I started to get pissed off at MS at around the time MVC 3 came out. That was not the direction I would have taken. Oh the bloat. Asp.Net Core Mvc is a dream. You start out with nothing, basically. Invent your own conventions.

I'm happy to not touch .Net 4 again. Love Core.

Edit: as parent said though: Microsoft, your tooling has gone from best-of-breed to just-another-messed-up-ide. Please remove everything you copied from Resharper from Visual Studio. It just doesn't work. Try renaming a file. I have never had anything but near-fatal studio errors such as "the refactoring of the file name just didn't work, man, crashing soon...". I want my Resharper back. Can you disable your stuff? I mean, all of it? And please don't ask me to develop server applications on a javascript client such as VS Code. Nut gunna do it.

Definitely seconded. Do a bit of .NET (non-core) maintenance too, so it's not like I'm completely unfamiliar with it.

Though, maybe legacy knowledge isn't helping...

Having knowledge about legacy (Microsoft) tech is not bad if you're good. Many companies I know run their business on VB.Net/WebForms/Knockout/ELK/MSSQL. We do at my current gig. You have to be its mother to love that stack.

It takes about 5 minutes to set up the dotnet CLI tools and get a "Hello World".

If you don't even want to spend that you can install Visual Studio and .NET Core stuff will just work out of the box, as is customary for VS.

Versioning and documentation is a mess, but neither you nor the grandparent seem to have actually made the minimal time investment necessary to even encounter those problems.

> Versioning and documentation is a mess, but neither you nor the grandparent seem to have actually made the minimal time investment necessary to even encounter those problems.

This is Microsoft's fault, not these guys, and it has pissed me off so many times over the years.

I always use the analogy that Microsoft builds these gigantic, beautiful mansions, but then to get to them you have to find the secret path that's covered in weeds.

A slightly different topic, but very much along the same theme:


What a mess! I want SSMS, do I even have it installed anymore? How do I clean this up without spending 6 hours (because I know something's going to go wrong during the uninstall)?

Yeah the problem isn't "hello world." It never is, it's building something with the tooling that works cross platform or that can be deployed to the platforms I want to target. That's much more than "hello world" and the important part.

Perhaps you could make a useful comment next time instead of something plainly not?

Well, you literally said that it was useless and that you gave up before you began. Given that, I'd say that revelation's comment was pretty useful - explaining how you could quickly and easily get up and running with .NET. Perhaps you could tone down the hyperbole next time?

I don't disagree with your point at all. Hopefully https://dot.net/core will become that. As @runfaster2000 says the team have taken the point on board and are working on it.

However FWIW, I put together a C# on Linux Workshop for DevConf.cz earlier on in the year that might be useful for some folks https://github.com/martinwoodward/csharpworkshop - also includes links to the docs for building from source etc if you want to go really into the details.

Thanks for that: https://github.com/dotnet/core/pull/326#issuecomment-2624791... is the clearest instructions for building from source* I've seen.

Note that that still seems to require an existing binary (the bootstrapping problem). I wonder if the Debian CLR people have seen this.


Point taken. We have some improvements to make on this front.

The Python and Django docs are great examples of how stellar reference material can be maintained for every release.



One then that would have seriously helped me a few months ago, when I did a little project to learn some C# and write a command line tool using .NET Core would be a simple list of "using" statements that I'm likely to see in C# books and other documentation that are not available in Core (or that need configuration or settings changes to make work). (Or maybe the other way...a list of all "using" statements that work out of the box).

The command line tool I was trying to write was to read my Safari reading list on my Mac, and construct an HTML page that contains the same information that I could put on my website, where I could then access it from my Surface Pro. Apple provides a way to export the reading list in XML, so that was my input.

I don't remember what it was now, but my first approach used some XML stuff that I got out of examples from some recent C# book, and it worked fine in Visual Studio Community Edition on my Windows gaming machine. In Core, though, on my Mac (and on my Surface Pro and Windows gaming machine) it failed to build. It was not finding something I was trying to include via "using".

I was not able to figure out if that thing is simply not part of Core, or if some build setting somewhere has to be changed to make it available.

(I eventually changed my approach and dealt with the XML through LINQ instead of at a lower level, so that I no longer needed whatever it was whose "using" was giving me trouble, and successfully got access to my Reading List from my Surface Pro).

Rooting for you guys. Lots of bad-ass tech has been locked up on Windows for years, can't wait to see it everywhere.

Speaking of names and versions -- while working on Cloud Foundry Buildpacks we frequently turned our brains into pretzels trying to manage what components were versioned how. We even had custom logic to parse a YAML file where we maintained a mapping to keep things straight.

Especially since some components embedded different versions of other components.

I don't know if the situation has improved since I rotated off, but a bog-ordinary semver scheme would've saved a world of pain.

Failing that, a single page with components (SDK? Runtime?) and available version numbers that gets updated.

Because we mostly wound up working what was what from forensic readings of scattered blog posts, Github release and I think comments on Github issues.

In any case, I am sure the team would be glad to give you feedback on their experiences since then -- my email is in my profile if want me to pass anything along.

Thankyou! I will ping my colleagues tomorrow.

BTW: Your friends can also contact me -> rlander@ms

The thankyous keep rolling. I also remembered I can point you at the Slack instance where they live -- https://slack.cloudfoundry.org/, in the #buildpacks channel.

but i have found driver development docs appealing. also its good if u allow to download offline version of the docs.

I know you are in the .NET team but we have critical issues with Microsoft (we are MSDN subscribers) that are not addressed. The most critical issue is the impossibility to pass automated tests and sign a network device driver because of a Windows 10 bug! If you can help routing this inside the organization would be great. More info about the issue here: https://social.msdn.microsoft.com/Forums/SharePoint/en-US/b1...

Sorry to hear that. I suggest calling support. Cross-org bug routing isn't super easy.

I have followed: https://www.hanselman.com/blog/PublishingAnASPNETCoreWebsite...

Worked like charm had site up and running in 20 mins which is kind of "production" ready. With supervisor and reverse proxy. Or just do docker? You are overthinking a bit also with the terms, you don't need to know those terms by heart.

Yeah, the Microsoft docs are all always a pain to navigate. A lot of seemingly duplicate content. Not that Apple's docs were any better for many years (Swift docs are much better).

In contrast to those two, I've found Android's pretty good in the 3 years I've been referencing them.

This is my EXACT experience. It's crazy how similar both of our experiences were. Crazy amounts of fury navigating the Microsoft docs.

100% hear you on this. I work at Microsoft and recently started looking at our Getting Started experience (initially focused on our websites). As @runfaster2000 already mentioned, we are working on some changes/redesign to address exactly what you talked about. I sent an email to the address in your profile to see if you want to chat more and see if some of our ideas would solve your frustrations.

I liked the original modern.ie site. It was so much easier to navigate than modern microsoft sites.

It's very easy.


Actually the instructions for Debian are the best: download the tarball, adjust $PATH and go: https://www.microsoft.com/net/core#linuxdebian

But I went "ubuntu" route and bailed, looking for a simple tarball.

Why is the Ubuntu route too difficult?

Because Microsoft provides a package repository for ubuntu. This means you will get automatic updates.

If you don't like it you can install the same debian tarball on ubuntu.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact