猿问

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

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


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


XAML:


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

后面的代码:


public MyClass()

{

  InitializeComponent();

  #if DEBUG

    ArrowRight.IsEnabled = true;

  #endif

}

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


所以我试图改变这一点:

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

如何#if Debug正确使用?


大话西游666
浏览 215回答 2
2回答

莫回无

F5或Ctrl+F5独立于调试/发布模式构建。在顶部的下拉列表中,您可以选择调试或发布配置。在调试模式下,定义了“DEBUG”符号,所以你的#if作品(里面的代码被编译)。在 Release 模式下,它没有被定义,所以你的代码行没有被编译。它甚至显示为灰色。F5 和 Ctrl+F5 都可以在选择的任何配置下运行:F5 只是附加调试器,而 Ctrl+F5 则没有。您可能会看到一条警告,提示您正在尝试调试以发布模式构建的应用程序。另请参阅此问题以检测调试器。

万千封印

您正在正确使用调试指令;执行没问题。更正您在发布版本中遇到的任何“Locator.dll”问题,您可以确认这一点。做F5或CTRL+F5没有禁止构建 - 如果您在构建后运行时尝试附加调试器并不重要,无论哪种方式,您仍然在 Debug 中构建。或者,您可以在这里颠倒逻辑,看看它是否适用。使按钮默认启用。<Button&nbsp; x:Name="ArrowRight" IsEnabled="True"/>使用调试指令时禁用它public MyClass(){&nbsp; InitializeComponent();&nbsp; #if DEBUG&nbsp; &nbsp; ArrowRight.IsEnabled = false;&nbsp; #endif}
随时随地看视频慕课网APP
我要回答