This is a simple question. I just can't run my program if the Newtonsoft.Json.dll is not in the program folder. Why this? I've tried adding the reference, added the file to the project root, added to the resources folder, but nothing worked. How to run the program without the Newtonsoft.Json.dll in the program folder? I'm developing in a Windows Form Application.
Problem solved, thanks to spender for introducing me the ILMerge, a really really nice NuGet package that can combine third party dlls to a single executable binary file. For who wants to make a standalone application, just use ILMerge. Rapid, easy and extremely useful. See ya!
Usually, if your program uses a DLL, then you'll need that DLL in the app folder (or in the user path, or the GAC).
The conventional method of distributing multiple files is with an installer. You can write one using either WiX or the VS Installer Projects extension. Now all your output files get installed in one go along with all the other goodness that comes with an installed program. I have a strong preference for this method.
However, there are alternatives:
Download the source and copy the source into your main project, then it will be compiled into your main assembly (make sure you check that this is permitted by the license).
Use ILMerge to combine all your assemblies into a single binary.