2012-08-13 89 views
5

我正在开发一个VS包,并且我需要实现的功能的一部分是将文件添加到当前打开的解决方案的解决方案项目中。如何以编程方式将文件添加到解决方案?

如果右键单击解决方案并选择添加>现有项目,这与手动执行的操作完全相同。然后在磁盘上选择一个文件。

我仔细看过DTE和DTE2接口,可以看到添加和操作项目的操作,但似乎没有任何添加单个文件的操作。

谢谢。

回答

9

好的,我意识到我可以只记录一个宏来捕获操作,然后检查VS宏IDE中的代码。

这样做的代码是。

DTE.ItemOperations.AddExistingItem(filePath); 
+0

如何在vstemplate中实际提供文件?可能吗? – tofutim 2013-12-11 10:36:53

+0

@tofutim我不确定你的评论正在问什么。这个问题与VS模板没有任何关系。也许你需要开始自己的具体问题? – Martyn 2013-12-12 13:43:37

2

要做到这一点,你需要访问项目的ProjectItems成员,并呼吁AddFromFile()

ProjectItem pi = project.ProjectItems.AddFromFile(filePath); 
+0

感谢您的回复。我试图将该项添加到解决方案而不是特定项目 – Martyn 2012-08-13 12:06:40

+0

解决方案具有[AddFromFile](http://msdn.microsoft.com/en-us/library/envdte.solution_members%28v=vs.90% 29) – 2012-08-13 12:11:53

+1

没有那个呼叫不起作用。它期望在你提供的路径上提供一个项目。我刚刚弄明白了。看到我上面的答案。 – Martyn 2012-08-13 12:15:26

-1

您需要AddFromFileProjectItems集合Project

http://msdn.microsoft.com/en-us/library/envdte.projectitems.addfromfile(v=vs.100).aspx

编辑:

添加到解决方案n,AddFromFile针对Solution

+0

感谢您的回复。我试图将该项目添加到解决方案而不是特定项目 – Martyn 2012-08-13 12:07:12

+0

然后调用'AddFromFile'来解决'解决方案' – podiluska 2012-08-13 12:08:26

+2

没有那个调用不起作用。它期望在你提供的路径上提供一个项目。我刚刚弄明白了。请参阅上面的答案。 – Martyn 2012-08-13 12:09:43

相关问题