← Back to context

Comment by WorldMaker

4 days ago

> it's still the weird Visual Studio format

.NET 9 (and VS2022) added support for the SLNX replacement format to replace the old weird solution format:

https://devblogs.microsoft.com/visualstudio/new-simpler-solu...

Yep, but you still can't say "compile and link everything in this tree". Technically, the language can, but the framework assumes specific compiler, linker and layouts on the filesystem so at that point you can't. It really wants that editor-related stuff to be part of the framework, and everything else has to bend for it.

  • A Project file today can just be a full tree glob. New projects start out in that form. The `dotnet` CLI is still going to assume some default output paths as it builds object files and executable assets, but those are all easily flag configurable today. (I've done some wild CI things.)

    You don't have to use a Solution at all with the CLI, you can do everything in a single Project and one full tree glob. (Technically you haven't need a Solution with Visual Studio for a long while either, if you don't mind it sometimes auto-creating them at compile time, and even then you can just .gitignore .sln and not care. But even that random auto-.sln file thing has disappeared in recent years and Visual Studio has learned more auto-workspace tricks from VS Code.)

    I have started projects that just did that, started with a simple glob-only project and no prescribed file layout.

    Yeah, dotnet doesn't let you micro-manage the linker specifically, but few languages since C++ do and arguably the C/C++ linker sometimes seems as much a bug of C/C++ as a feature in modern times.