4 ms·
If your code does not rely on native libraries, or you're fine with shipping multiple copies for different operating systems, a single build works everywhere wi
by homebrewer 2y ago
If your code does not rely on native libraries, or you're fine with shipping multiple copies for different operating systems, a single build works everywhere with dotnet installed.
Or you can cross-compile and run without having dotnet on the target system, I do it from Linux to all three platforms all the time, it's pretty seamless. The application can be packaged into a single binary (similar to Go), or as a bunch of files which you can then then package up into a zip file.
- actionfromafar 2y agoHow do you cross compile from linux to macos?
- orphea 2y agodotnet publish -r osx-x64 --self-contained https://learn.microsoft.com/en-us/dotnet/core/deploying/#publish-self-contained https://learn.microsoft.com/en-us/dotnet/core/deploying/#pub...
- mlhpdx 2y agoJust like for windows or Linux, in other words. The dotnet tooling is amazingly friction and ceremony free these days.
- neonsunset 2y agoJIT deployments do not care where they get built on. AOT deployments do because they use OS-provided linker to produce the final binary, much like C++ and Rust do (unless you use PublishAotCross nuget package which uses Zig toolchain to allow you to build Linux binaries from under Windows, I'm sure if someone's interested it could be extended further) Also, if you want to have just a single binary, you want to do 'dotnet publish /p:PublishSingleFile=true /p:PublishTrimmed=true' instead. Self-contained build means it just ships everything needed to run in a folder without merging the assembly files or without trimming unreachable code and standard library components.