ProjectItem.Object в некоторых случаях имеет значение null, не может запустить пользовательский инструмент - PullRequest
0 голосов
/ 16 апреля 2019

Я создал проект VSIX для запуска шаблонов T4 во время сборки.

В настоящее время появляется несколько случаев, когда это не работает.При отладке я заметил, что свойство ProjectItem.Object имеет значение null, поэтому приведение к VSProjectItem не работает и никакие пользовательские инструменты не выполняются.

public void ExecuteTemplate(ProjectItem template)
{
    var ignoredTemplates = Settings.Default.IgnoreList;

    //This cast fails because template.Object property is NULL
    VSProjectItem templateVsProjectItem = (VSProjectItem)template.Object;

    if (templateVsProjectItem != null)
    {
        if (ignoredTemplates != null && ignoredTemplates.Count > 0)
        {
            if (!ignoredTemplates.Contains(templateVsProjectItem.ProjectItem.Name))
            {
                templateVsProjectItem.RunCustomTool();
            }
            else
            {
                templateVsProjectItem.RunCustomTool();
            }
        }
        else
        {
            if (!template.IsOpen)
            {
                var window = template.Open();
                template.Save();
                window.Close();
            }
            else
            {
                template.Save();
            }
        }
    }
}

Что может быть причиной этого

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