Hacker News new | ask | show | jobs
by candiodari 1951 days ago
Yes but the resulting .exe depends on like 20 installed .dlls. For starters, the .NET runtime, which will fundamentally limit where your app runs.

Second updates in those underlying dlls and runtimes may prevent your app from working correctly.

So if the customer doesn't have or screws up their .NET installation, your app stops running. Getting a Delphi app to stop running on windows through bad sysadminning ... I haven't seen it done.

Think of C# apps like java .jar applications. They end in .exe, but they're not, not really. And at least .jar makes it a lot clearer it needs a JRE to run, and it's cross platform to boot.

2 comments

> Yes but the resulting .exe depends on like 20 installed .dlls. For starters, the .NET runtime, which will fundamentally limit where your app runs. Second updates in those underlying dlls and runtimes may prevent your app from working correctly.

Not these days (for newer codebases).

The DotNet Framework has that issue with the runtimes, but it's been a fair few years since Microsoft were suggesting people start new projects with the Framework for much other than WinForms.

The present and the future of DotNet is DotNet Core, which can produce cross-platform single-file stand-alone dependency-free binaries, well suited to a copy/paste deploy if you want.

That said, away from Windows you're a bit screwed for the GUI. It's a great flow for cross-platform console tools and web apps/servers though, especially with the free VS2019 Community Edition or, better still given it is many gigabytes less and cross-platform, with VS Code and the C# plugin.

Your reply is not what I asked.

I know the issues with the .Net dependency, like user has 4.0 but the app depends on 4.5 or similar problems. But this is not a big issue and you can if you want bundle the Java or .Net runtime inside the application.

Anyway I was aware of this binary size / memory usage difference in favor of unmanaged code, my question was something else, if you can clarify that or admit it was an error would be great.