C # Design Time Path - PullRequest
       1

C # Design Time Path

6 голосов
/ 26 ноября 2011

Я использую ряд пользовательских элементов управления C # (формы, кнопки и т. Д.), Которые используют систему скинов и зависят от внешних изображений (в zip-файле) в папке проекта.Сейчас дизайнер форм не может показать элементы управления, потому что я не могу получить правильный путь к zip-файлу.Мне нужен способ получить путь к сборке или решению во время разработки.

Я использую два проекта:DLL - содержит пользовательские элементы управления.Хост-приложение - ссылается на DLL и использует пользовательские элементы управления.

В моих классах пользовательских элементов управления DLL во время выполнения я просто использую:

string skinPath = "./Skins/" + skin + ".zip";

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

Could not find a part of the path 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Skins\Black.zip'.

Посмотрев похожие вопросы на сайте, я тоже попробовал следующее:
1)

if (designMode)
{
    EnvDTE.DTE dte = GetService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
    string path = Path.GetDirectoryName(dte.Solution.FullName);
}

Дизайнер форм отображает ошибку:

Object reference not set to an instance of an object.

2)

if (designMode)
{
    ITypeResolutionService typeResService = GetService(typeof(ITypeResolutionService)) as ITypeResolutionService;
    string path = typeResService.GetPathOfAssembly(Assembly.GetExecutingAssembly().GetName());
}

В конструкторе форм отображается ошибка:

Object reference not set to an instance of an object.

3) Множество разных путей с использованием класса Assembly.

Ничего из того, что еще не работало.Я использую Visual C # 2010 Express.

1 Ответ

1 голос
/ 26 ноября 2011

Ваша вторая попытка (ITypeResolutionService) должна работать нормально.Просто убедитесь, что вы вызываете GetService достаточно поздно, чтобы свойство Site было ненулевым.OnHandleCreated в порядке, конструктор управления слишком рано и выдает NullReferenceException.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...