DEPLOYMENT_OPTIONS.md
This document explains the two deployment options for mRemoteNG and how to build each version.
File suffix: -FD.zip
File suffix: -SC.zip
# x64
msbuild mRemoteNG.sln -p:Configuration=Release -p:Platform=x64
# ARM64
msbuild mRemoteNG.sln -p:Configuration=Release -p:Platform=ARM64
# x64
dotnet publish mRemoteNG\mRemoteNG.csproj `
--configuration Release `
--runtime win-x64 `
--self-contained true `
-p:Platform=x64 `
-p:PublishSingleFile=false `
-p:PublishReadyToRun=true `
-p:DefineConstants="SELF_CONTAINED"
# ARM64
dotnet publish mRemoteNG\mRemoteNG.csproj `
--configuration Release `
--runtime win-arm64 `
--self-contained true `
-p:Platform=ARM64 `
-p:PublishSingleFile=false `
-p:PublishReadyToRun=true `
-p:DefineConstants="SELF_CONTAINED"
The new workflow file Build_and_Release_mR-NB-MultiDeploy.yml automatically builds all four variants:
mRemoteNG-YYYYMMDD-vX.X.X-NB-XXXX-x64-FD.zipmRemoteNG-YYYYMMDD-vX.X.X-NB-XXXX-x64-SC.zipmRemoteNG-YYYYMMDD-vX.X.X-NB-XXXX-arm64-FD.zipmRemoteNG-YYYYMMDD-vX.X.X-NB-XXXX-arm64-SC.zipThe workflow runs when:
v1.78.2-dev branch with commit message containing "NB release"All four zip files are uploaded to a single GitHub Release with clear descriptions:
The MainAsync method now uses conditional compilation:
#if !SELF_CONTAINED
// Runtime check code only included in Framework-Dependent builds
// Checks for .NET Runtime and Visual C++ Redistributable
#endif
When building with -p:DefineConstants="SELF_CONTAINED", the runtime checks are completely excluded from the compiled binary.
Choose Framework-Dependent (FD) if:
Choose Self-Contained (SC) if:
Consider offering both options:
SELF_CONTAINED symbol definedwin-x64win-arm64Self-contained builds use these optimizations:
PublishReadyToRun=true - AOT compilation for faster startupIncludeNativeLibrariesForSelfExtract=true - Bundle native dependenciesPublishSingleFile=false - Keep files separate for better compatibility with mRemoteNG's plugin systemTypical build sizes:
| Version | Framework-Dependent | Self-Contained |
|---|---|---|
| x64 | ~18 MB | ~95 MB |
| ARM64 | ~18 MB | ~95 MB |
Note: Self-contained includes entire .NET 10 runtime (~80 MB overhead)
The original workflow Build_and_Release_mR-NB.yml is preserved. To migrate:
Build_and_Release_mR-NB.ymlBuild_and_Release_mR-NB-MultiDeploy.yml → Build_and_Release_mR-NB.yml