powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
25 сообщений из 36, страница 1 из 2
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277354
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создал компонент.
Сей компонент подключается к серверу, берёт данные в соответсвии с его правами:
Код: c#
1.
this.dtAdapter.FillByWinAuth(СчитатьWindowsЛогинЮзера())


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

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
[ЕслиПрограммаЗапущенаНаВыполнение, то выполнить код:]
this.dtAdapter.FillByWinAuth(СчитатьWindowsЛогинЮзера());
[Конец]

[ВПротивномСлучаеЭтотКодВыполяется,видимо,ПрямоИзСредыРазработки]
[просто чтобы быть отображённым на форме, поэтому выполнить код:]
this.dtAdapter.Fill();
[Конец]
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277376
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
#if(DEBUG)
RunInDebugMode();
#else
RunInReleaseMode();
#endif
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277380
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

#if DEBUG
#else
#endif
не годится ?
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277393
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland, директивы препроцессора здесь не помогут т.к. студия выполняет тот же код контрола, который будет выполняться на runtime этапе. На stackoverflow есть обсуждение где приводится 5 способов отличить design-time on run-time и утверждается что самый надежный это свойство LicenseManager.UsageMode .
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277395
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skole
Код: c#
1.
2.
3.
4.
5.
#if(DEBUG)
RunInDebugMode();
#else
RunInReleaseMode();
#endif


очень рядом, но не то.
"DEBUG" говорит о том, объявлена ли такая переменная, или нет. Если у меня выбран режим "отладка" а не "релиз", то после запуска выполняется кусок кода после IF, в противном случае релизный..
НО
Я НЕ запускаю приложение. Я просто использую компонент. Чтобы отобразиться на форме в режиме проектирования , код внутри него выполняется. Вот и вопрос:
как отличить, находится ли проект в режиме проектирования, либо он запущен? Есть ли такой аналог глобальной переменной DEBUG?
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277398
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

добавь свою команду препроцессора. и когда надо включай её, когда надо выключай

#if MyDEBUG
#else
#endif
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277426
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erCharles Weyland,

добавь свою команду препроцессора. и когда надо включай её, когда надо выключай

#if MyDEBUG
#else
#endif
Объявил в начале эту хрень
#define DEVELOPE

и теперь мне при каждом запуске комментить эту строку?
Слишком неудобно. Крайне.
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277434
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileCharles Weyland, директивы препроцессора здесь не помогут т.к. студия выполняет тот же код контрола, который будет выполняться на runtime этапе. На stackoverflow есть обсуждение где приводится 5 способов отличить design-time on run-time и утверждается что самый надежный это свойство LicenseManager.UsageMode .
Развёрнуто и чётко.
Спасибо, сам бы я точно не нашёл.
Решение:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
if(LicenseManager.UsageMode.ToString() == "Runtime")
{
//рантаймный код
}
else
{
//альтернативный код
}
   
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277435
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandСлишком неудобно. Крайне.

ну попробуй так, создай свою конфигурацию и наслаждайся

...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277438
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland
Код: c#
1.
if(LicenseManager.UsageMode.ToString() == "Runtime")


Не надо так писать если не хочешь чтобы твой код или тебя обзывали плохими словами. Правильнее так:
Код: c#
1.
if (LicenseManager.UsageMode == LicenseUsageMode.Runtime)



P.S. Твои вопросы демонстрируют серьезные пробелы в знаниях базовых вещей относительно .NET/C#. Если ты планируешь серьезно заниматься .NET, то следует как можно быстрее эти пробелы закрыть. Рекомендую прочитать книгу "Программирование на платформе Microsoft .NET Framework 4.0 на языке C#" Джеффри Рихтера.
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277521
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileРекомендую прочитать книгу "Программирование на платформе Microsoft .NET Framework 4.0 на языке C#" Джеффри Рихтера.
Скачал, начну с сегоднешнего дня.
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277573
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

а что значит в режиме разработки?
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277617
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АбсолютCharles Weyland,

а что значит в режиме разработки?
а это когда я на форму компоненты кидаю.
Есть два режима:
design-time (когда я леплю форму из компонент, в т.ч. своих. Т.е это тот самый период до нажатия F5)
и
run-time (после компиляции и запуска программы. Сбсна, когда программа запущена и выполняется)
Дело в том, что если нарисовать свой компонент, то он начинает работать уже в тот момент, когда ты его на форму кидаешь. Кинул на форму - выполнился конструктор. Изменил размер компонента или любое другое его свойство - выполнились обработчики свойств, функции, запустились некоторые обработчики событий...
А раз код выполняется, то в нём и ошибки могут быть. Скажем, индекс массива вышел за пределы диапазона или деление на ноль. Тогда форма, на которой лежит этот компонент, перестаёт отображаться как нормальная форма, а вместо неё отображается что-то напоминающее web-страничку с ошибкой. Вот, пока ты эту ошибку в компоненте не исправишь, форма назад не отобразится.
Конкретно у меня проблема была в том, что в режиме разработки мой компонент пытался достучаться до сервера и по некоторым причинам не мог. В то время как в режиме работы программы он стучится без проблем. И чтобы мне видеть мою форму по-человечески и иметь возможность с ней работать, мне потребовалось, чтобы строка, выполняющая попытку доступа к серверу, не выполнялась, а просто пропускалась...

как-то так.
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277647
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

очень много букв.

у контрола есть свойство - DesignMode (ессно в рантайме проверять)
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277735
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилCharles Weyland,

очень много букв.

у контрола есть свойство - DesignMode (ессно в рантайме проверять)Не всегда есть доступ к контролу...

Проще свою статическую переменную описать. Ставить ей в начале программы в рантайме true. Для всех остальных случаев будет false: дизайнер, юниттест и т. п.

зы: DI не советую по идейным соображениям. :-)
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277798
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНе всегда есть доступ к контролу...
топикстартер разве не контрол пишет?
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277805
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КНе всегда есть доступ к контролу...
топикстартер разве не контрол пишет?Лучше иметь единый подход для контролов и неконтролов?
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277834
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛучше иметь единый подход для контролов и неконтролов?
зачем "неконтролу" эта зависимость?
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277836
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кзы: DI не советую по идейным соображениям. :-)
Не уловил, DI - это что?
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277851
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

Dependency Injection
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277868
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кзы: DI не советую по идейным соображениям. :-)
Так, так, так...
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277930
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperАлексей Кзы: DI не советую по идейным соображениям. :-)
Так, так, так...
забавно, но VS( и прочие среды разработки) собственно DI и используют (свойство Site интерфейса IComponent)
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277934
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КЛучше иметь единый подход для контролов и неконтролов?
зачем "неконтролу" эта зависимость?"Чистая ViewModel" не имеет ссылки на View. Были случаи, когда она вызывается дизайнером и её поведение должно отличаться.

Ну и тестирование... Была нужда отключить систему безопасности в сервисах модели. Мне проще поставить пару if-ов в методах вроде UserContext.RoleDemand("roleName") , чем прикручивать альтернативный "проверятель" через DI.
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277936
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилзабавно, но VS( и прочие среды разработки) собственно DI и используют (свойство Site интерфейса IComponent)
А как же идейные соображения?
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277961
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилcooldeveloperпропущено...

Так, так, так...
забавно, но VS( и прочие среды разработки) собственно DI и используют (свойство Site интерфейса IComponent)Там это оправдано. Если я буду писать Visual Studio - обещаю сделать так же, несмотря на то, что некоторые обзывают ServiceProvider "абсолютным злом". :-)
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]