Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отладочные метки XML, как пользоваться 
:(
    Опции темы
LLlaMaH
Дата 25.1.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.6.2007

Репутация: нет
Всего: нет



я попробую пояснить суть вопроса:


есть препроцессорный набор:


#define DEBUG

#if (DEBUG)
        MessageBox.Show("TEST");
#else 
            MessageBox.Show("OK");
#endif


если переменная DEBUG объявлена то сработает ТЕСТ а если не объявлена то сработает ОК

меня интересует возможно ли сделать что то аналогичное  в шарпе с помощью (не знаю правильного термина, ну это такие штуки которые в квадратных скобках ставятся перед классом или переменной) что бы при выборе типа сборки Debug или Release у меня допустим в итоговую сборку не попадали некоторые функции используемые мной для отладки. для примера приведу некорректную строку =)

[что_то_нужное]
bool TestClass()
{
}


мне нуно чтобы эта функция не попала в  релизовую сборку..

Это сообщение отредактировал(а) LLlaMaH - 25.1.2008, 11:08
PM   Вверх
PPS05
Дата 25.1.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

Репутация: 1
Всего: 7



LLlaMaH, если правильно понял, вот здесь - то, что нужно - аттрибут Conditional.


--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
LLlaMaH
Дата 27.1.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.6.2007

Репутация: нет
Всего: нет



нет...это немного не то....по ссылке описание того что я написал....про #define

а меня интересует (я узнал как это называется) атрибут класса.
например у меня отладочный класс для nunit, в нем есть метод:

Код

[Test]
void Test()
{
}


Перед методом стоит атрибут [Test]
для того чтобы NUnit могла тестировать сборку.

Меня интересует аттрибут который нужно поставить перед методом и он вкомпилировлскя в сборку в зависимости от режима компиляции Debug или Release. И вообще возможно ли такое?
PM   Вверх
mr.DUDA
Дата 27.1.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Цитата(LLlaMaH @  27.1.2008,  15:41 Найти цитируемый пост)
Меня интересует аттрибут который нужно поставить перед методом и он вкомпилировлскя в сборку в зависимости от режима компиляции Debug или Release. И вообще возможно ли такое?


PPS05 правильно сказал про атрибут Conditional. Это "как раз-таки то".
Код
using System;
using System.Diagnostics;

class Program
{
    [Conditional("DEBUG")]
    void DoOnlyIfDebug()
    {
        Console.WriteLine("this is debug method");
    }

    [Conditional("RELEASE")]
    void DoOnlyIfRelease()
    {
        Console.WriteLine("this is release method");
    }

    static void Main()
    {
        Program prog = new Program();

        prog.DoOnlyIfDebug();
        prog.DoOnlyIfRelease();
    }
}


Если скомпилировать в режиме Debug, прога выдаст только первую строку. В Release только вторую. То есть вызовы методов просто будут игнорироваться, если не определена константа указанная в атрибуте над методом.

Так как по умолчанию константа препроцессора RELEASE не добавляется, нужно добавить её вручную. Окно свойств проекта, закладка Build, написать слово RELEASE в поле Conditional compilation symbols.


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.