You can, but the startup times, binary size, memory usage, … are all pretty dramatic compared to programs you build with C / C ++, Go or Rust. It’s all perfectly doable for server applications, but Microsoft is aiming it for IOT devices as well, and I think it’s really struggling there.
.NET simply doesn’t lend itself well to cutting, due to past choices (eg reflection). The ability to dynamically load assemblies, to dynamically invoke functions (eg ASP.NET controllers) make this very difficult. Despite many promises, the situation is still quite dramatic and I don’t expect it to really work unless MS wants to break with the past.
Meanwhile, the .NET era is starting to get a little painful. Find out how non-nullable types are implemented. Instead of a native type, it is created with type annotations (attributes). That everything causes misery. All calls from outside the assembly with a non-nullable type must still be checked for null.
I have been working with .NET since version 1.0 (think 20 years ago), but for a few years now I have also been programming with Go and Rust. Then you will suddenly see the shortcomings of .NET much better. I can recommend it to any programmer to broaden his horizons. Don’t keep doing everything in .NET (I did too), but look beyond.