#if如果不调试,调试不会禁用按钮

时间:2018-05-29 08:37:10

标签: c# debugging

在我的wpf应用程序中,我有一些按钮,如果我在调试中,我希望它能启用我的意思是如果我通过F5运行我的应用程序。

如果我不在调试中,我希望它被禁用,我的意思是ctrl + F5

XAML:

<Button  x:Name="ArrowRight" IsEnabled="False"/>

代码背后:

public MyClass()
{
  InitializeComponent();
  #if DEBUG
    ArrowRight.IsEnabled = true;
  #endif
}

但是如果我运行F5甚至是ctrl + F5

,则始终启用该按钮

所以我试着改变这个:

enter image description here

到&#34;发布&#34;但如果我构建我的解决方案,它会告诉我我错过了一些Locator.dll

如何正确使用#if Debug

2 个答案:

答案 0 :(得分:2)

F5 Ctrl + F5 独立于调试/发布模式构建。

在顶部的下拉列表中,您可以选择“调试”或“发布”配置。在调试模式下,定义了“DEBUG”符号,因此#if有效(内部代码已编译)。在发布模式下,它未定义,因此您的代码行不会被编译。它甚至显得灰暗。

F5和Ctrl + F5都可以在选择的任何配置下运行:F5只是附加调试器而Ctrl + F5没有。您可能会看到警告您正在尝试调试以发布模式构建的应用程序。

另请参阅this question以检测调试器。

答案 1 :(得分:0)

你正确使用调试指令;实施很好。

更正您在发布版本中遇到的“Locator.dll”问题,您可以确认。

执行F5CTRL+F5没有限制构建 - 如果您在构建之后运行时尝试连接调试器无关紧要,那么您仍然以Debug方式构建。

或者,您可以在此处反转逻辑并查看是否适用。

默认情况下启用按钮。

<Button  x:Name="ArrowRight" IsEnabled="True"/>

使用debug指令

时禁用它
public MyClass()
{
  InitializeComponent();
  #if DEBUG
    ArrowRight.IsEnabled = false;
  #endif
}