Что такое атрибут .NET, чтобы не компилировать метод в режиме выпуска? - PullRequest
2 голосов
/ 10 мая 2010

Я знаю, что если у меня есть блок кода, который я не хочу компилировать, то в режиме выпуска я могу обернуть этот блок кода в:

#if DEBUG
   while(true)
{ Console.WriteLine("StackOverflow rules"); }
#endif

Это предотвратит компиляцию этого блока кода в любом режиме, кроме DEBUG.

Я знаю, что есть атрибут, который можно поместить в целый метод, который будет делать то же самое, но я не могу вспомнить, что это за атрибут. Я верю, что это пространство имен System.Diagnostics, но я не совсем уверен.

Кстати: я использую .NET 4, но я знаю, что этот атрибут существовал в .NET 2, потому что я использовал в старых проектах.

Спасибо

Ответы [ 3 ]

3 голосов
/ 10 мая 2010

Это Условный атрибут .

Указывает компиляторам, что метод вызов или атрибут должны игнорироваться если не указано условное Символ компиляции определен.

Вы должны определить его как [Conditional("DEBUG")] и убедиться, что константа DEBUG не определяется в режиме выпуска.

0 голосов
/ 10 мая 2010

При использовании ConditionalAttribute помните, что его нельзя использовать в функциях, которые возвращают что-либо, кроме void, или принимают в качестве аргумента выходной параметр. С ref-параметром все в порядке, поскольку эта переменная создается перед вызовом метода.

[Conditional("DEBUG")]
public void Success1(string param)

[Conditional("DEBUG")]
public void Success2(ref string param)

[Conditional("DEBUG")] // out parameter
public void CompileErrorCS0685(out string param)

[Conditional("DEBUG")] // non-void function
public bool CompileErrorCS0578(string param)
0 голосов
/ 10 мая 2010

В качестве альтернативы условному атрибуту вы можете просто использовать:

#if (!DEBUG) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...