首页 > 解决方案 > ProjectItem.Object 在某些情况下为空,无法运行自定义工具

问题描述

我创建了一个 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();
            }
        }
    }
}

这可能是什么原因?

标签: c#visual-studio-extensions

解决方案


推荐阅读