Способ определить, выполняется ли в среде IDE или нет?

В C#/VB в Visual Studio 2010, есть ли в коде способ определить, выполняется ли программа в настоящее время в среде IDE или нет?

eg. If ProgramRunningInIDE Then MessageBox.Show exc.Message

person CJ7    schedule 08.03.2013    source источник
comment
Или просто посмотрите связанный список в правой части этой страницы.   -  person Steve    schedule 08.03.2013
comment
Я считаю, что это хорошее применение для #if DEBUG.   -  person IAbstract    schedule 08.03.2013
comment
@IAbstract, не так, если вы работаете в конфигурации выпуска.   -  person Morrison Cole    schedule 08.03.2013
comment
@ Моррисон: как только я проследил за чередой дурацких вопросов, я узнал кое-что новое.   -  person IAbstract    schedule 08.03.2013


Ответы (2)


Вы можете проверить, подключен ли отладчик с помощью:

System.Diagnostics.Debugger.IsAttached

По сути, это то же самое.

person Morrison Cole    schedule 08.03.2013
comment
Возвращает ли это значение true, если в среде IDE, но в режиме выпуска? - person Steve Smith; 07.11.2019
comment
@SteveSmith технически может возвращать false даже в режиме отладки, если отладчик не подключен. Отладчик также может быть присоединен к сборкам выпуска, и в этом случае будет возвращено значение true. - person Morrison Cole; 09.11.2019

Вы можете использовать свойство IsInDesignMode. Однако в некоторых случаях это неточно, поэтому вы также можете проверить UsageMode.

public static bool IsRunningInIdeContext
{
    get {
        if (DesignerProperties.IsInDesignMode)
            return true;
        return LicenseManager.UsageMode == LicenseUsageMode.Designtime;
    }
}
person fjdumont    schedule 08.03.2013
comment
IsInDesignMode может использоваться элементом управления (в библиотеке), чтобы понять, размещен ли он в конструкторе (визуальная студия) или в запущенном приложении, но он не имеет ничего общего с обнаружением того, было ли приложение запущено в среде IDE или нет. IsInDesignMode вернет true только для элемента управления, созданного IDE, а не если приложение запущено IDE. - person Max; 08.03.2013
comment
Тогда поясните, пожалуйста, это в своем вопросе. Это в значительной степени то, что я понимаю под «в настоящее время программа работает в среде IDE». - person fjdumont; 08.03.2013
comment
@fjdumont Во время разработки ваша программа на самом деле не работает, не так ли? - person mg30rg; 02.02.2016