2012-08-13 112 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

相關問題