相关疑难解决方法(0)

C#!条件属性?

C#有一个没有 Conditional(!Conditional,NotConditional,Conditional(!))属性?


我知道C#有一个Conditional属性:

[Conditional("ShowDebugString")]
public static void ShowDebugString(string s)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

这相当于1:

public static void ShowDebugString(string s)
{
#if ShowDebugString
   ...
#endif
}
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我想要反向行为(你必须明确选择退出):

public static void ShowDebugString(string s)
{
#if !RemoveSDS
   ...
#endif
}
Run Code Online (Sandbox Code Playgroud)

这让我尝试:

[!Conditional("RemoveSDS")]
public static void ShowDebugString(string s)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

哪个不编译.和:

[Conditional("!RemoveSDS")]
public static void ShowDebugString(string s)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

哪个不编译.和:

[NotConditional("RemoveSDS")]
public static void ShowDebugString(string s) …
Run Code Online (Sandbox Code Playgroud)

c# conditional conditional-compilation

63
推荐指数
5
解决办法
2万
查看次数

在C#中隔离调试和发布代码

我正在编写一个应用程序,其中我有一些我不想删除的调试代码,但我希望在编译发布/发布时修改或删除它.例如,我想在调试版本中使用这样的东西:

MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
Run Code Online (Sandbox Code Playgroud)

...在发布版本中成为这个:

MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望做这样的事情:

#if DEBUG_BUILD
   MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
#else
   MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
#endif
Run Code Online (Sandbox Code Playgroud)

我希望每次更改构建类型时都不必在项目属性中添加/删除条件编译符号 ; 它应该自动发生.有没有办法在Microsoft Visual C#2008 Express Edition中执行此操作?谢谢.

c# debugging release

11
推荐指数
2
解决办法
3553
查看次数