Как определить время разработки в проекте библиотеки управления VS.NET 2003

StackOverflow https://stackoverflow.com/questions/144898

  •  02-07-2019
  •  | 
  •  

Вопрос

Приведенный ниже код не работает должным образом, чтобы определить, находится ли он в режиме разработки (VS.Net 2003 — Библиотека управления):

if (this.Site != null && this.Site.DesignMode == true)
{
// Режим разработки
}
еще
{
// Время выполнения
}

Он используется в сложном пользовательском элементе управления, производном от другого пользовательского элемента управления и включающем в себя другие пользовательские элементы управления.
Есть ли другой способ определить время разработки в VS.NET 2003 или в чем проблема с приведенным выше кодом?

Это было полезно?

Решение

DesignMode не будет работать изнутри конструктора.Некоторые альтернативы (не уверен, что они работают в версии 1.1):

if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime)

или

вызов GetService(typeof(IDesignerHost)) и посмотреть, вернет ли он что-нибудь.

Мне больше повезло с первым вариантом.

Другие советы

Я думаю, вы могли бы использовать HttpContext.Current == null, как описано в http://west-wind.com/weblog/posts/189.aspx

В .Net 2.0 есть Control.DesignMode (http://msdn.microsoft.com/en-us/library/system.web.ui.control.designmode.aspx).Думаю, у вас есть веские причины оставаться на VS 2003, поэтому обновление может оказаться для вас не вариантом.

Обновлять Если вы используете Winforms, Component.DesignMode (http://msdn.microsoft.com/en-us/library/system.comComponentmodel.comComponent.designmode.aspx) — правильный способ проверки.Однако, если this.Site.DesignMode не работает должным образом, Component.DesignMode может работать не так, поскольку он выполняет именно ту проверку, которую вы выполняете (Site != null && Site.DesignMode).

Возможно, это маловероятно, но уверены ли вы, что ваш базовый элемент управления не переопределяет свойство Site?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top