We develop an application in c# with a lot of assembly files like exe, dll and other custom extensions.
by default the name of each file is equal to its project name and it’s too clear for user.
Is there any best practice for naming the output files of each project and keep it unclear for users that install our application?
It sounds like you want to prevent users from poking around the internals of the project, and possibly simplify their use of it. There are best practices on this. I would point you to obfuscation, and merge tools.
Obfuscation: .NET obfuscation tools/strategy
Merging: Best practices for merging assemblies?
When you Obfuscate your code, it will be very difficult to de-compile it. As the previous article mentions with 3.5 it is not as much of an issue as it used to be. This will help if you want to keep those that are very technically inclined out.
When you merge the assemblies, all the DLL’s and EXE’s you see will become one EXE. This is good because it will be clear on what they need to run, but at the same not give them too much information on the internal workings. This is something that I don’t generally worry about with my end users, but I am sure you have your reasons.