Themida от Oreans Technologies и в ней включить опцию XBundler. В итоге все dll в одном файле плюс файл защищён одним из лучших на сей день протектором. Один минус -- Themida платная.
ilmerge
ключик для проекта
В общем варианты есть, но учитывайте что по факту это распаковывается во временную директорию и из нее запускается, так что сюрпризы будут
Василий Банников, Скинь пожалуста утверждение от мелкомягких. А то я поимел некислый геморой именно с этим поведением.
Весь бандл распаковывался в темп и внезапно экзешник считал что он в темповой директории и естественно не находил appsettings.json
This deployment model has been available since .NET Core 3.0 and has been enhanced in .NET 5.0. Previously in .NET Core 3.0, when a user runs your single-file app, .NET Core host first extracts all files to a temporary directory before running the application. .NET 5.0 improves this experience by directly running the code without the need to extract the files from the app.
Из-за этого правда возникает небольшой API Incompatibility
Assembly.Location: Returns an empty string.
Module.FullyQualifiedName: Returns a string with the value of <Unknown> or throws an exception.
Module.Name: Returns a string with the value of <Unknown>.