You can use .NET Core . It is also possible as Mono, but this is less and less necessary.
.NET Core has some limitations yet. By 2019 you will no longer have most of them and you can carry your full application for it. But today a good part can already be carried. Some things can never be ported, but in any case they are things that should not be used anyway, they are considered problematic and obsolete resources.
.NET Core is self-contained and does not rely on anything previously installed. You mount the executable only with what you need. It still needs at least one DLL in addition to the executable. To have 100% native and non-DLL executable you would need the .NET Native , but that for the moment only works for one type specific application.
If you depend on the .NET Framework full you have nothing to do. And actually if you already have the proper .NET on the machine, you do not even need it because everything is already there.
Anyway .NET Framework will become almost legacy. It will be enduring, it will evolve, but very slowly, and only what is easy and necessary. Core is the future for almost everything, especially new designs.