Joh*_*Doe 5 c# add-in visual-studio envdte projectitem
在成功创建表单的Visual Studio加载项中,但没有给我任何关于EnvDTE的prjItem实例的引用.
这是将表单添加到项目中的代码段:
string templatePath = solution.GetProjectItemTemplate("Form.zip", "csproj");
ProjectItem prjItem = project.ProjectItems.AddFromTemplate(templatePath, "myForm.cs");
Run Code Online (Sandbox Code Playgroud)
Obs.:'solution'是一个EnvDTE80.Solution2对象.
对于cource,我可以通过其他方式获取引用,例如proj.ProjectItems.Item([index])(做一个循环并检查名称),但这不是我想要的方式,我需要这个引用inorther to添加控件到此表单.
难道我做错了什么?
刚刚在MSDN上发表评论:
AddFromTemplate始终返回NULL值
有一次,这是真的.但是对于Visual Studio的更高版本,其中包括从单个模板添加多个项目的功能,此方法的返回值无法返回多个项目.所以它现在在所有实例中返回NULL值.这是因为在不破坏已经使用的大量代码的情况下,无法更改此特定方法的COM签名的约束.
因此,如果你只需要通过电话AddFromTemplate加入该项目的项目项界面,您可以通过ProjectItems访问集合,或者你可以调用AddFromTemplate之前创建一个ProjectItemsEvents.ItemAdded事件,并存储掉项目项传递给你的OnItemAdded处理程序.
http://msdn.microsoft.com/en-us/library/envdte.projectitems.addfromtemplate(v=vs.80).aspx#1