我刚刚查看了关于这个主题的以前的问题,但是我得到了一些奇怪的结果。
首先,我遵循并使用了Scott Hanselman在他的博客中提出的方法:http://www.hanselman.com/blog/HowToProgrammaticallyDetectIfAnAssemblyIsCompiledInDebugOrReleaseMode.aspx 因此,使用IsJITOptimizerDisabled,我应该检查特定的DLL是在发布模式还是调试模式下编译的。
奇怪的是,我刚刚尝试了它,构建了一个简单的应用程序来检查那个属性,并通知被检查的程序集是在调试模式还是发布模式下。检查结果与我已经编译成两种模式的两个dll一切正常。
然后我把这个简单的应用程序传递给同事,并确认在他的工作站上结果符合预期,调试dll显示“调试”,发布显示“发布”(这两个dll包含在同一个压缩包中)。
首先,我遵循并使用了Scott Hanselman在他的博客中提出的方法:http://www.hanselman.com/blog/HowToProgrammaticallyDetectIfAnAssemblyIsCompiledInDebugOrReleaseMode.aspx 因此,使用IsJITOptimizerDisabled,我应该检查特定的DLL是在发布模式还是调试模式下编译的。
奇怪的是,我刚刚尝试了它,构建了一个简单的应用程序来检查那个属性,并通知被检查的程序集是在调试模式还是发布模式下。检查结果与我已经编译成两种模式的两个dll一切正常。
然后我把这个简单的应用程序传递给同事,并确认在他的工作站上结果符合预期,调试dll显示“调试”,发布显示“发布”(这两个dll包含在同一个压缩包中)。
然而,当他尝试在另一台服务器上(通过mstsc)使用简单的应用程序检查那些dll时,对于这两个dll,简单的应用程序显示“Debug”(即使使用ILDASM打开DLL时一切都正常,并且某些特定方法包含在“#if DEBUG”区域中不会出现在Relase dll中)。
现在,我疯了,这个问题背后是否有原因?我是不是太老了看不清发生了什么?反射是否在环境中有一些依赖关系?是否有一些服务包解决了类似的已知问题?
干杯,
Gianluca