You need to do just the opposite. You (and everyone) need to sign all the assemblies (at least for industrial/commercial applications) so no one would be able to modify any (in a more or less easy way).
The only valid way of modification of the code is re-build of the projects; the only valid way to modify the behavior of the existing software product is the data (including plug-ins: even though they are appear as executable modules, they are considered as data before they are loaded, the selection and loading of them is driven by data, even if this data is a simple command-line string).
Not only you code will be error prone and considered as a virus by a anti-viral/anti-spyware tools, this is the abuse of the technology. You never really need to modify and executable files (more exactly any PE file, including any .NET assembly modules). The benefits of it are questionable or insignificant (if any), the down-side is extremely nasty.
To read about theoretical grounds of this situation, you need to be aware of Von Neumann architecture,
http://en.wikipedia.org/wiki/Von_Neumann_architecture[
^], this architecture, in turn, implements the Universal Turing machine,
http://en.wikipedia.org/wiki/Universal_Turing_machine[
^].
Von Neumann architecture goes back to 40th, when the principles of isolation of code and data were recognized and used as a solid fundamental base for all real-life architectures implemented later. One of the purposes of resources embedded in the executable files was making them unmodifiable by putting them under the same umbrella as the code. Violation of these principles always leads to some dead end, at best.
—SA