【发布时间】:2011-04-02 15:54:47
【问题描述】:
我刚刚查看了有关主题的先前问题,但我得到了一些奇怪的结果。
首先,我遵循并使用了 Scott Hanselman 在他的博客中的一篇旧帖子中提出的方法:http://www.hanselman.com/blog/HowToProgrammaticallyDetectIfAnAssemblyIsCompiledInDebugOrReleaseMode.aspx
因此,使用 IsJITOptimizerDisabled 我应该检查特定 DLL 是否已在发布模式或调试模式下编译。
奇怪的是,我刚刚尝试过,构建了一个简单的应用程序来检查该属性并通知检查的程序集处于调试或发布模式。对照我已经在两种模式下编译的两个 dll 检查了结果和一切正常。
然后我将那个简单的应用程序传递给一位同事,他确认在他的工作站中结果符合预期,Debug dll 显示“Debug”,发布显示“Release”(这两个 dll 包含在同一个 zip简单的应用程序)。
但是,当他尝试在另一台服务器(通过 mstsc)中使用该简单应用程序检查两个 dll 时,简单应用程序显示“调试”(即使使用 ILDASM 打开 DLL 一切似乎都很好,并且有一些特定的方法包含在“#if DEBUG”区域内的 Relase dll 中不存在)。
现在,我要疯了,这个问题背后有什么原因吗?我是不是太老了,看不到发生了什么?反射会以某种方式依赖于环境吗?是否有一些服务包可以解决类似的已知问题?
干杯,
詹卢卡
【问题讨论】:
-
您是比较完全相同的二进制文件还是在另一台机器上重新编译?
-
同一个DLL已经用简单的应用程序复制了,无需重新编译!这就是我要发疯的原因! :)
标签: c# model compilation