Hacker News new | ask | show | jobs
by CrimsonCape 733 days ago
What I dislike about C# is how much effort is needed to get a minimal environment. Rust and Python make simple code compilation quick and easy.

Let's assume I want to use a C# script .csx file. The CSX filetype seems to be Microsoft's flavor of attempting to "make it simple". I write a hello world. Now what do I do with the .csx?

I have no idea how to compile that with modern dot net.

It appears csi.exe would have been the answer, but now Roslyn seems to be the current best practice. No idea what to do though

1 comments

I'm not sure where you are coming from in terms of difficulty of setting it up, it's just

    - sudo apt install dotnet-sdk-8.0 / brew install dotnet-sdk
    - dotnet new console -o {folder} --aot
    - dotnet run -c Release
    - optionally dotnet publish -o .
If you want to use it as a scripting language, you do `dotnet tool install -g dotnet-script` and use it normally[0]. Keep in mind that C# is not designed for this, but it will work (at the cost of first uncached script launch costing extra - it is a compiled language after all, but that's a niche scenario anyway).

[0]: https://github.com/dotnet-script/dotnet-script?tab=readme-ov...

Thanks, I will look into the github repo. Although I think it's a bit confusing, since the steps you describe above lead to a requirement for the .net 8 runtime which leads to the following licensing information. It's not clear how to proceed with C# development as an open source language. I thought maybe it could be done by cloning Roslyn (MIT license) from github.

Do I need to accept the below licenses to develop a C# app? I'm not asking you specifically, just that I don't care to try and understand if I can even use the language without accepting any of the below, (anything not MIT or Apache)

License information for .NET on Windows

The Windows distribution of .NET contains files that are provided under multiple licenses. This information is provided to help you understand the license terms that apply to your use. By using any or all of these files you agree to their associated license terms.

The following binaries are licensed with the Windows SDK License:

api-ms-. (used by .NET runtime, .NET 6 and earlier) ucrtbase.dll (used by .NET runtime, .NET 6 and earlier) D3DCompiler_47_cor3.dll (used by WPF)

The following binaries are licensed with the .NET Library License

Microsoft.DiaSymReader.Native.{x86|amd64|arm|arm64}.dll (used by .NET runtime and SDK) PresentationNative_cor3.dll (used by WPF) wpfgfx_cor3.dll (used by WPF) The following binaries are licensed with the Microsoft Visual C++ Runtime Software License:

vcruntime140_cor3.dll (used by WPF)

All other binaries and files are licensed with the MIT license

This document is provided for informative purposes only, and is not itself a license.

I'm still as confused. Where do people even find those? Are you sure you are not intentionally misinterpreting information? Because it does seem so.

In any case: https://github.com/dotnet/dotnet/blob/main/LICENSE.TXT

I followed your instructions, ran dotnet build, and attempted to run the debug build .exe.

I got a message "You must install .NET to run this application."

So I followed the link[0] given as part of the CLI output which led to the .Net Runtime installer. Inside the installer it stated "By clicking install, you must agree to the following terms" and a link[1] was part of the terms I must agree to.

[0]https://aka.ms/dotnet-core-applaunch?missing_runtime=true&ar...

[1]https://github.com/dotnet/core/blob/main/license-information...

I would prefer not to accept non-MIT terms...

If text comprehension presents a significant challenge, you may want to consider other avenue of activity, over programming.

To those who are reading the thread, you are welcome to verify other claims made by the account I am responding to, which were proven by other participants false. This is a cheap trolling attempt and I think my response is the more polite way to share disappointment over this fact.

No need for personal attacks. I still stand by my opinion. Without a project template, you would be in the dark to set up a project. .sln files and .proj files are arcane and I might be dumb for not being able to create these by hand but I think most people would agree it is arcane hidden XML and a pain.

I need to reorganize the generated project template because it's not actually up to common standards of what a project directory should look like. As a newbie I would never know that I need to find David Fowler's gist[0] to have a project that makes sense.

Good luck trying to change the default .bin folder without aid from a third party's script or Visual Studio.

It's not obvious how to create a project settings JSON file. There are entire paid video workshops for this task alone. This kind of code should be pre-generated in the template.

This is all stuff that should be handled before a user even touches the environment.

[0]https://gist.github.com/davidfowl/ed7564297c61fe9ab814