C# #如果调试不成功';t使按钮在未调试时禁用

C# #如果调试不成功';t使按钮在未调试时禁用,c#,debugging,C#,Debugging,在我的wpf应用程序中,我有一些按钮,如果我在调试中,我希望它被启用,我的意思是如果我通过F5运行我的应用程序 如果我不在调试中,我希望它被禁用,我的意思是ctrl+F5 XAML: 但是,如果我运行F5甚至ctrl+F5,则该按钮始终处于启用状态 所以我试图改变这一点: 但如果我构建我的解决方案,它会告诉我缺少一些Locator.dll 如何使用#如果调试正确?F5或Ctrl+F5独立于调试/发布模式构建 在顶部的下拉列表中,您可以选择调试或发布配置。在调试模式下,定义了“debug”符号,

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

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

XAML:

但是,如果我运行F5甚至ctrl+F5,则该按钮始终处于启用状态

所以我试图改变这一点:

但如果我构建我的解决方案,它会告诉我缺少一些Locator.dll

如何使用
#如果调试
正确?

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

在顶部的下拉列表中,您可以选择调试或发布配置。在调试模式下,定义了“debug”符号,因此您的
#if
工作正常(内部代码已编译)。在发布模式下,它没有被定义,因此您的代码行不会被编译。它甚至显示为灰色

无论选择何种配置,F5和Ctrl+F5都会运行:F5只附加调试器,而Ctrl+F5不附加调试器。您可能会看到一条警告,提示您正在尝试调试以发布模式构建的应用程序


另请参阅以检测调试器。

您正在正确使用debug指令;执行情况良好

更正您在发布版本中遇到的任何“Locator.dll”问题,您可以对此进行确认

执行
F5
CTRL+F5
对生成没有任何限制-无论您在生成后运行时是否尝试附加调试器,您仍然以调试方式生成


或者,您可以在这里颠倒逻辑,看看它是否适用

使按钮在默认情况下处于启用状态

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

根据这一点,您需要绑定值。硬编码不起作用。您正确使用了debug指令;执行情况良好。更正发布版本中存在的Locator.dll问题,您可以对此进行确认
F5
CTRL+F5
没有任何限制-也就是说,无论您是否尝试附加调试器。无论采用哪种方式,您仍在
Debug
中构建。设置Command属性时,似乎会产生副作用。确保未设置或正确设置了Command属性,并且在Command属性之后定义了IsEnabled属性。
public MyClass()
{
  InitializeComponent();
  #if DEBUG
    ArrowRight.IsEnabled = true;
  #endif
}
<Button  x:Name="ArrowRight" IsEnabled="True"/>
public MyClass()
{
  InitializeComponent();
  #if DEBUG
    ArrowRight.IsEnabled = false;
  #endif
}