在成功创建表单的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])(执行循环并检查名称),但这不是我想要的方式,我需要这个引用在其他地方添加控件到这个表单。
我做错了吗?
答案 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