Jon Skeet said:
Why on earth should it be part of the C# compiler? That means you've
got to have another obfuscator as part of the VB.NET compiler, and
another as part of the MC++ compiler - assuming that they're just as
worthy of obfuscation.
Having a single obfuscator which works with assemblies rather than
source is much simpler, IMO.
Here is my whole point, you may did not read my suggestion:
I strongly suggest to provide built-in obfuscation support in C# compiler,
here are the reasons:
1. Shipping a commercial product without minimum protection is unacceptable.
2. Current third party obfuscator all could get your final release broken,
you lose confidence on your own product. And if the tools you use has bug,
you will have more trouble.
3. The current obfuscator make it a very hard job to deliver a patch
assembly, you have to keep track what you did before. Once you lose the
mapping you used, you cannot deliver a patch any more. The easy deployment
features from .Net are totally lost with current obfuscation.
4. I believe the compiler knows the program better than any other third
party tools; it sure can do a better and safer job, and release the
obfuscation burden from developer.
My suggestion is to add a key based obfuscation option to the C# compiler,
it is up to you to turn it on or off. As long as you use the same key to
compile your entire solution, no matter how may times you do, the public
types always have the same obfuscated name, you don’t have to worry about
delivering a patch later on. The only thing you have to keep in mind is the
key, and I think is easy to do.