Existe-t-il une variable ou une constante de préprocesseur permettant de savoir que le code est exécuté dans le contexte de Visual Studio?
Réponses
Trop de publicités?Essayez De Débogueur.Les isattached ou DesignMode de propriété ou d'obtenir ProcessName ou une combinaison, selon le cas
Debugger.IsAttached // or
LicenseUsageMode.Designtime // or
System.Diagnostics.Process.GetCurrentProcess().ProcessName
Voici un échantillon
public static class DesignTimeHelper {
public static bool IsInDesignMode {
get {
bool isInDesignMode = LicenseManager.UsageMode == LicenseUsageMode.Designtime || Debugger.IsAttached == true;
if (!isInDesignMode) {
using (var process = Process.GetCurrentProcess()) {
return process.ProcessName.ToLowerInvariant().Contains("devenv");
}
}
return isInDesignMode;
}
}
}
La propriété DesignMode n'est pas toujours précise. Nous avons eu recours à cette méthode pour que cela fonctionne de manière cohérente:
protected new bool DesignMode
{
get
{
if (base.DesignMode)
return true;
return LicenseManager.UsageMode == LicenseUsageMode.Designtime;
}
}
Le contexte de votre appel est important. DesignMode a renvoyé la valeur false dans l'EDI si elle a été exécutée dans un événement dans certaines circonstances.
Il est l' DesignMode
de la propriété pour les Composants. Il est très pratique lorsque vous utilisez le Design de la Visionneuse de VS.
Mais quand vous parlez de débogage dans Visual Studio, vous devez utiliser l' Debugger.IsAttached
de la propriété. Ensuite, vous pouvez utiliser
#if DEBUG
#endif
trop
Je pense que le moyen le plus simple et le plus fiable de déterminer si votre extension est exécutée dans le concepteur WinForms est de vérifier le processus en cours.
public static bool InVisualStudio() {
return StringComparer.OrdinalIgnoreCase.Equals(
"devenv",
Process.CurrentProcess.ProcessName);
}
Vous pouvez vérifier une propriété DesignMode, mais d'après mon expérience, elle n'est pas toujours précise. Vous pouvez également vérifier si l'exécutable est DevEnv.exe.
Jetez un coup d'oeil ici . Peut faire de cette question une dupe mais tout dépend de ce que vous essayez d'accomplir.