[c#] 如何檢測C#Windows窗體代碼是否在Visual Studio中執行?


Answers

DesignMode屬性並不總是準確的。 我們已經使用過這種方法,因此它可以保持一致:

    protected new bool DesignMode
    {
        get
        {
            if (base.DesignMode)
                return true;

            return LicenseManager.UsageMode == LicenseUsageMode.Designtime;
        }
    }

您的通話環境非常重要。 如果在某些情況下在事件中運行,我們已經在IDE中返回false。

Question

是否有變量或預處理器常量允許知道代碼是在Visual Studio的上下文中執行的?




你可以用這個:

protected static bool IsInDesigner
{
    get { return (Assembly.GetEntryAssembly() == null); }
}



我認為確定您的擴展是否在WinForms設計器中執行的最簡單,最可靠的方法是檢查當前進程。

public static bool InVisualStudio() {
  return StringComparer.OrdinalIgnoreCase.Equals(
    "devenv", 
    Process.CurrentProcess.ProcessName);
}



我使用此代碼來區分它是在Visual Studio中運行還是部署到客戶端。

if (ApplicationDeployment.IsNetworkDeployed) {
    // do stuff 
} else {
   // do stuff (within Visual Studio)
}

對我來說很好。 我在Visual Studio中跳過一些邏輯(例如登錄到應用程序等)。




Related



Tags

c# c#   winforms