powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
36 сообщений из 36, показаны все 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
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38277968
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КБыли случаи, когда она вызывается дизайнером и её поведение должно отличаться.
пущай дизайнер и сообщит модели, что ей особое поведение требуется. Штатным и одинаковым для всех компонетов (компонент - класс, реализующий IComponent)
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38278001
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кнекоторые обзывают ServiceProviderLocator "абсолютным злом". :-)
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38278007
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperАлексей Кнекоторые обзывают ServiceProviderLocator "абсолютным злом". :-)Спасибо! :-)
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38278008
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КБыли случаи, когда она вызывается дизайнером и её поведение должно отличаться.
пущай дизайнер и сообщит модели, что ей особое поведение требуется. Штатным и одинаковым для всех компонетов (компонент - класс, реализующий IComponent)Проще сделать через глобальный контекст.
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38278009
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КСпасибо! :-)
Чё спасибо, 50 бачей гони! :)
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38278028
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperАлексей КСпасибо! :-)
Чё спасибо, 50 бачей гони! :)Москва портит людей!
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38278053
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМосква портит людей!
Не отожмёшь - с голоду помрёшь

P.S. Читаю e1 форум, порадовал вброс:

...В общем, что мы имеем в сухом остатке.
Сотрудник ОД отработал на твёрдую пятёрку Итак, пойдём по порядку

3) что-то всё время дребезжит в правой задней двери
--------------------------------------------------------------------------------
Дребезжать, как назло, перестало ещё вчера утром... И сегодня салон был тих как могила Хотя до этого исправно дребезжало в течение 5 месяцев
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38278106
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПроще сделать через глобальный контекст.
спецификация в классе реализации IComponent как бы намекает на зависимость от дизайнера.
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38278135
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для впф-а
Код: vbnet
1.
2.
3.
4.
Public Function IsInDesignTool() As Boolean
  Return CBool(DependencyPropertyDescriptor.FromProperty(DesignerProperties.IsInDesignModeProperty,
                                                                                GetType(FrameworkElement)).Metadata.DefaultValue)
End Function



для колбасы (4.0?)
Код: vbnet
1.
2.
3.
Public Function IsInDesignTool() As Boolean
  Return DesignerProperties.IsInDesignTool
End Function
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38278178
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КПроще сделать через глобальный контекст.
спецификация в классе реализации IComponent как бы намекает на зависимость от дизайнера.Там вроде как есть ряд особенностей, из-за которых использовать ISite.DesignMode не всегда удастся. Мне проще в методе main присвоить ApplicationInfo.IsRuntimeMode = true Кто-то может не согласиться - его право.
...
Рейтинг: 0 / 0
C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
    #38278188
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, этот способ
bazile
Код: c#
1.
if (LicenseManager.UsageMode == LicenseUsageMode.Runtime)


в каких-то случаях не применим?
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# директивы препроцессору.. как ему сказать, чтобы он строку не компилил?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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