没有引用通过AddFromTemplate()返回的项目项

时间:2011-03-03 17:36:29

标签: c# visual-studio add-in envdte projectitem

在成功创建表单的Visual Studio加载项中,但没有给我任何关于EnvDTE的prjItem实例的引用。

以下是将表单添加到项目中的代码段:

string templatePath = solution.GetProjectItemTemplate("Form.zip", "csproj");
ProjectItem prjItem = project.ProjectItems.AddFromTemplate(templatePath, "myForm.cs");

Obs。:'solution'是一个EnvDTE80.Solution2对象。

对于cource,我可以通过其他方式获取引用,例如proj.ProjectItems.Item([index])(执行循环并检查名称),但这不是我想要的方式,我需要这个引用在其他地方添加控件到这个表单。

我做错了吗?

1 个答案:

答案 0 :(得分:8)

刚刚在MSDN上发表评论:

  

AddFromTemplate始终返回NULL   值

     

有一次,这是真的。但   使用更高版本的Visual Studio,   其中包括添加的能力   单个模板中的多个项目,   此方法的返回值可以   不归还多件物品。现在就是这样   在所有实例中返回NULL值。   这是由于这个问题所致   这个特殊的COM签名   方法不能没有改变   打破了许多已经在使用的代码。

     

因此,如果你需要的话   项目的ProjectItem接口就好了   通过AddFromTemplate调用添加,   你可以迭代   ProjectItems集合,或者你可以   创建一个ProjectItemsEvents.ItemAdded   在打电话之前的事件   AddFromTemplate,并存储掉   ProjectItem传递给您的OnItemAdded   处理程序。

http://msdn.microsoft.com/en-us/library/envdte.projectitems.addfromtemplate(v=vs.80).aspx#1