C# 确定已发布DLL中的调试/发布模式?没有#调试

C# 确定已发布DLL中的调试/发布模式?没有#调试,c#,build-process,C#,Build Process,我有一个可以在某些项目中引用的组件(例如,component.dll)。当然,我是以发布模式发布的 在另一个项目中(例如,project.exe),我引用了Component.dll 如果我在调试模式下构建Project.exe,有没有办法在我的Component.dll库中找到它 进一步说明:如果我在Component.dll中有一个名为Test的类和方法。我可以做一些类似于: public void Test(){ if(Debug.IsInDebugMode) ..

我有一个可以在某些项目中引用的组件(例如,
component.dll
)。当然,我是以发布模式发布的

在另一个项目中(例如,
project.exe
),我引用了
Component.dll

如果我在调试模式下构建
Project.exe
,有没有办法在我的
Component.dll
库中找到它

进一步说明:如果我在
Component.dll
中有一个名为
Test
的类和方法。我可以做一些类似于:

public void Test(){
    if(Debug.IsInDebugMode)
        ...
}

请记住,
Component.dll
是在发布模式下构建的。

您的代码是在发布模式还是调试模式下构建并不重要。生成的IL几乎相同。调试版本将具有jitter用来设置编译默认值的属性,该属性在您的版本中丢失。接下来重要的是如何调试或运行应用程序。重要的设置是工具+选项、调试、常规,“在模块加载时抑制JIT优化”。默认情况下,它被勾选


这就决定了你的应用程序是否由调试器启动。这很容易找到,请使用
System.Diagnostics.Debugger.IsAttached
属性。如果为false,则IL生成的机器代码将通过抖动进行优化。退化情况是在代码启动后附加调试器。顺便说一句,这对您没有任何影响,这一点很重要。

它看起来像是调试器。我需要的就是它。。当我进一步测试这个解决方案时,我会把答案标记为正确的。