我使用VS2013
内置的应用程序(用C#
编写),我怎么知道它是在Debug还是Release模式下构建的?是否足以检查文件.pdb
是否存在?
它不是C# if/then directives for debug vs release的副本..假设我没有源代码,只有编译过的文件,查看它们是否可以确定构建模式?我可以只查找.pdb
个文件吗?
答案 0 :(得分:5)
我怎么知道它是在Debug或Release模式下构建的?是否足以检查文件.pdb是否存在?
在调试模式下构建通常需要三件事:
我说"通常"因为没有要求任何这些事情都是一致的;例如,可以在没有优化的情况下发出PDB。
你没有说出你感兴趣的这三件事中的哪一件,或者为什么。我将描述如何检测第一个:是否已禁用优化构建的程序集?
最简单的方法是在程序集上运行ILDASM并检查任何方法的IL。在禁用优化的情况下构建的方法将始终包含nop
条指令。这些都是"没有操作"无效的指示;它们的存在只是为了通过提供开发人员可以放置断点的更多位置来使代码更容易调试。
例如," hello world"禁用优化的方法是:
nop
ldstr "Hello world"
call void [mscorlib]System.Console::WriteLine(string)
nop
ret
但是启用优化后,nop
就会消失。
如果您对检测调试与发布模式的其他方法感兴趣,请参阅此重复问题中的链接:
答案 1 :(得分:0)
有几种方法:
答案 2 :(得分:0)