C#代码无论是编译成IL中间语言,还是直接使用NGen.exe编译成本机代码都不能保护知识产权,因为即使是编译成了本机代码,CLR执行的时候还是需要访问程序集的元数据(用于反射和序列化等功能),所以无论如何都是需要IL的,而有IL就意味着可以逆向工程。
要怎么保护知识产权呢?
使用非托管模块编写保密的代码,这种模块会直接包含CPU指令,而不通过CLR,所以可以达到保密的作用。BTW,C#不能编写非托管模块,所以这个问题的答案就是C#不能保护知识产权。
C#代码无论是编译成IL中间语言,还是直接使用NGen.exe编译成本机代码都不能保护知识产权,因为即使是编译成了本机代码,CLR执行的时候还是需要访问程序集的元数据(用于反射和序列化等功能),所以无论如何都是需要IL的,而有IL就意味着可以逆向工程。
要怎么保护知识产权呢?
使用非托管模块编写保密的代码,这种模块会直接包含CPU指令,而不通过CLR,所以可以达到保密的作用。BTW,C#不能编写非托管模块,所以这个问题的答案就是C#不能保护知识产权。