C#代碼無(wú)論是編譯成IL中間語(yǔ)言感论,還是直接使用NGen.exe編譯成本機(jī)代碼都不能保護(hù)知識(shí)產(chǎn)權(quán)奈揍,因?yàn)榧词故蔷幾g成了本機(jī)代碼曲尸,CLR執(zhí)行的時(shí)候還是需要訪問(wèn)程序集的元數(shù)據(jù)(用于反射和序列化等功能),所以無(wú)論如何都是需要IL的男翰,而有IL就意味著可以逆向工程另患。
要怎么保護(hù)知識(shí)產(chǎn)權(quán)呢?
使用非托管模塊編寫(xiě)保密的代碼蛾绎,這種模塊會(huì)直接包含CPU指令昆箕,而不通過(guò)CLR,所以可以達(dá)到保密的作用租冠。BTW鹏倘,C#不能編寫(xiě)非托管模塊,所以這個(gè)問(wèn)題的答案就是C#不能保護(hù)知識(shí)產(chǎn)權(quán)顽爹。