c# - 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();
}
}
}
}
这可能是什么原因?
解决方案
推荐阅读
- php - 更新图像变为空 Laravel
- authentication - 带有 Cognito 和 LoginWithAmazon 的 API 网关
- nhibernate - NHibernate Mapping-by-code 一对一关系:通过加入获取?
- excel - 按名称引用现有数据透视图
- javascript - PageSpeed Insights 诊断“确保文本在 webfont 加载期间保持可见”
- c# - 用不同间距的新行(多行)拆分字符串
- oauth-2.0 - 假设客户身份的超级用户遵循什么 oauth 模式
- javascript - 是否需要在 html、js、css 中添加约束来调整不同的屏幕尺寸
- node.js - 通过 HTTPS 表达静态目录
- css - 如何在 1 个 div 类中应用 2 个 CSS 样式?