我有一个.NET C#应用程序,只能在一台具有已知配置的计算机上运行(如果这很重要,请运行HP DL120 G7,Xeon E3-1220,Windows Server 2008 R2 Foundation)。我不需要在其他计算机上运行此应用程序。
我想:
我应该以某种方式编译为本机Windows代码吗?可能我应该使用一些特殊的编译器选项?
答案 0 :(得分:4)
您可以在“发布”模式下编译它以启用优化。此外,您可以运行ngen.exe来生成本机DLL,这不会产生JIT的开销。
但是,请记住,所有这些措施和工具都不是编写糟糕的代码的灵丹妙药(不是说你的代码)。您应该分析您的应用程序,看看您是否可以即兴创建任何代码路径的执行时间,以及找出较慢的路径(并寻求改进它们)。
为了保护它,请使用一个好的混淆器,如(Salamander,SmartAssembly等)。它不会完全难以辨认,但它会让事情变得更加困难。
绝对 保护它,用C ++编写代码!您可以使用/clr
选项对其进行编译,这将使它们immune to reflection和反汇编。
答案 1 :(得分:2)
从.Net程序集中恢复代码很容易。您可以通过混淆内容(google for this)来进行某种方式。
对于编译,CLR将在进程启动时有效地编译它 - 您不必担心这一点。如果启动时间很长,可以使用ngen(AOT编译器)编译程序集:
http://en.wikipedia.org/wiki/Native_Image_Generator
如果你想确保它的速度很快,请确保你在发布模式下进行编译,并进行优化(它将在你的项目属性中)。
答案 2 :(得分:1)
您可以使用ngen创建和缓存程序集的优化本机映像。