当前位置: 首页 > 编程语言 > C#

方法名编译成EXE?share

时间:2023-04-10 20:42:07 C#

方法名会编译成EXE吗?将Windows应用程序项目编译为EXE后,类、方法和变量名是否包含在MSIL中?例如,如果按名称调用方法:是的,它们在IL中-启动反射器,您将看到它们。如果它们最终没有出现在IL中,您就无法将它们构建为库。(是的,您可以像引用类库一样引用.exe文件。)但是,这一切都在JIT中解决了一次。保持名称的可读性,以便以后维护代码。性能问题不太可能产生任何可衡量的差异,如果您想混淆您的代码,请不要在源代码级别进行(您是阅读代码的人)——以专门的方式进行混淆。编辑:至于要包括什么——为什么不启动Reflector或ildasm并找出答案呢?从内存中,您丢失了局部变量名称(如果您构建它,它们位于pdb文件中),但仅此而已。私有方法名和私有变量名仍然存在。是的,他们有。我认为使用较短的名称不会显着提高性能。这种增益无法克服可读性的损失。局部变量不包括在MSIL中。字段、方法、类等。变量是基于索引的。成员名称确实包含在IL中,无论它们是私有的还是公共的。事实上,所有的代码都包含在内,如果你使用Reflector,你几乎可以阅读应用程序的所有源代码。剩下的就是调试应用程序了,我想可能会有这样的工具。如果您正在制作一个包含大量客户和竞争对手的打包应用程序,您绝对必须(我怎么强调也不为过)混淆您的代码。幸运的是,有许多混淆器可用。这是我对.Net的主要抱怨之一。既然MS在这方面付出了很多努力,为什么不开发(或得到)专业的混淆器并使其成为VS的一部分。Dotfuscator没有削减它,不是他们为社区使用的版本。有什么不同?我不确定VM如何查找标识符,但我很确定它不会进行直接的字符串比较查找。这将是最糟糕的方法。老实说,我认为代码混淆对此没有多大帮助。大多数有能力的开发人员已经形成了一种“第六感”来快速发现问题,即使像方法名这样的标识符完全没有用,因为他们需要维护或改进的源代码已经存在这些问题(我说的是方法名)例如“DoAllStuff()”。无论如何,通过默默无闻的安全通常是一个坏主意。如果您担心混淆,请查看.NETReactor。我测试了8种不同的混淆器,Reactor不仅是市售的最便宜的,而且是第二好的(最好的是最贵的,DotfuscatorGold)。[编辑]事实上,现在我想起来了,如果您关心的是混淆方法名称,那么VS.NET,Do??tfuscatorCommunityEdition附带的那个应该可以正常工作。我认为它们已添加,但名称的长度不会影响任何内容,因为查找函数名称的方式。至于混淆,我认为有一些工具(Dotfuscator或类似工具)基本上可以完全按照您的意思进行操作。以上是C#学习教程:方法名是否编译成EXE?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: