2012-08-13 24 views
5

Ich entwickle ein VS-Paket und ein Teil der Funktionalität, die ich implementieren muss, ist das Hinzufügen einer Datei zu den Lösungselementen der aktuell geöffneten Lösung.Wie programmiere ich eine Datei programmatisch zu einer Lösung?

Dies ist genau die gleiche Aktion, die manuell ausgeführt würde, wenn Sie mit der rechten Maustaste auf eine Lösung klicken und Hinzufügen> Vorhandenes Element auswählen. Dann wählte eine Datei auf der Festplatte.

Ich habe mir die DTE- und DTE2-Schnittstellen genau angesehen und kann die Operationen zum Hinzufügen und Bearbeiten von Projekten sehen, aber es scheint keine Operationen zum Hinzufügen einzelner Dateien zu geben.

Danke.

Antwort

9

Ok, ich erkannte, dass ich nur ein Makro aufzeichnen konnte, um die Operation zu erfassen, dann untersuchen Sie den Code in der VS Macro IDE.

Der dafür erforderliche Code ist.

DTE.ItemOperations.AddExistingItem(filePath); 
+0

Wie liefert man die Datei tatsächlich in die vstemplate? Ist es möglich? – tofutim

+0

@tofutim Ich bin mir nicht sicher, was genau dein Kommentar fragt. Diese Frage hat nichts mit VS-Vorlagen zu tun. Vielleicht müssen Sie Ihre eigene spezifische Frage beginnen? – Martyn

2

Um dies zu tun, müssen Sie das ProjectItems Mitglied des Projekts für den Zugriff auf und AddFromFile()

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

Danke für die Antwort. Ich versuche, das Element der Projektmappe und nicht einem bestimmten Projekt hinzuzufügen – Martyn

+0

Lösung hat [AddFromFile] (http://msdn.microsoft.com/en-us/library/envdte.solution_members%28v=vs.90% 29) zu –

+1

Nein, dieser Anruf funktioniert nicht. Es erwartet ein Projekt auf dem von Ihnen angegebenen Weg. Ich habe es gerade herausgefunden. Siehe meine Antwort oben. – Martyn

-1

Sie müssen AddFromFile zum ProjectItems Sammlung eines Project

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

bearbeiten nennen:

Hinzufügen zu einer Solutio n, AddFromFile gegen Solution

+0

Danke für die Antwort. Ich versuche, das Element zu der Lösung und nicht zu einem bestimmten Projekt hinzufügen – Martyn

+0

Dann rufen Sie 'AddFromFile' gegen die' Lösung' – podiluska

+2

Nein, dieser Aufruf funktioniert nicht. Es erwartet ein Projekt auf dem von Ihnen angegebenen Weg. Ich habe es gerade herausgefunden. Sieh mir die Antwort oben. – Martyn