Datei im Projekt von der Befehlszeile einschließen

8

Gibt es eine Möglichkeit, eine Datei in das Projekt von der Kommandozeile in vs2012 aufzunehmen?

Der Grund, warum ich frage, ist, weil es sehr frustrierend ist, jede neue Datei, die ich dem Projektordner hinzufüge, wenn ich eine andere IDE verwende (wie ST3) oder wenn ich eine Datei aus Photoshop usw >

Ich benutze Grunt, um eine Menge Minimierung, Verkettung, Ausführung von ngmin in meinen eckigen Skripten usw. zu machen. Es gibt ein grunt-shell-Plugin, das grunt-Tasks erlaubt, Shell-Befehle auszuführen (ich benutze es bereits zum Entsperren von gesperrten) Dateien von TFS). Also dachte ich, dass ich eine Aufgabe erstellen könnte, die das Projekt für mich für jede neue Datei, die ich hinzufüge, in das Projekt einbinden würde (indem ich einen bestimmten Ordner mit Grunt-Watch ansehe).

    
Roland 29.06.2013, 16:26
quelle

5 Antworten

6

Hier ist eine Lösung mit PowerShell. Es ist ein bisschen lang, aber ich verspreche es funktioniert. Ich habe einiges getestet.

Erstens, der einfache Teil. So führen Sie das Skript über die Eingabeaufforderung aus:

%Vor%

Nun der gruselige Teil, AddExistingItem.ps1:

%Vor%

95% des Codes dienen nur dazu, Sie von der Eingabeaufforderung ausführen zu lassen. Wenn Sie Code direkt in PowerShell schreiben und ausführen, können Sie ihn weglassen und direkt zu $IDE = New-Object -ComObject VisualStudio.DTE wechseln.

Hier ist ein Blog-Beitrag, in dem erklärt wird, warum diese gruseligen Sachen benötigt werden.
Und hier ist ein weiterer auf dieselbe Sache, aber in C #.

Eine weitere erwähnenswerte Sache. Ich habe versucht, die EnvDTE-Assemblys zu verwenden, wie Sie es in .net tun würden, aber ich habe immer einen COM-Registrierungsfehler erhalten. Sobald ich anfing, die COM-Objekte direkt zu verwenden, funktionierte alles. Ich weiß nicht genug über COM, um wirklich zu raten, warum das so ist.

BEARBEITEN

Wenn dieser Fehler beim Ausführen des Skripts über die Eingabeaufforderung angezeigt wird:

Dann müssen Sie das zuerst ausführen (Sie sollten es nur einmal ausführen.)

powershell -command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned"

Hier ist eine gute, gründliche Erklärung dessen, was dieser Befehl macht.

    
Mark Rucker 05.08.2013, 00:51
quelle
3

Sie können die Projektdatei manuell bearbeiten, um Dateien hinzuzufügen.

Die Projektdatei hat ein XML-basiertes Format, das Sie symply bearbeiten können. Verwenden Sie grunt-text-replace zum Bearbeiten.

Sie können

ersetzen %Vor%

mit

%Vor%     
Vasiliy 26.07.2013 08:19
quelle
3

Sie könnten einfach eine kleine exe erstellen, um das für Sie zu erledigen:

%Vor%

Struktur von C: \ Projects \ Test:

  • Test.csproj
  • SomeFolder
    • Tester.cs

Verwendung: AddTfsItem.exe C:\Projects\Test\Test.csproj SomeFolder\Tester.cs

Beachten Sie, dass die Datei relativ zur .csproj-Datei sein muss.

    
drphrozen 29.07.2013 09:07
quelle
2

Ich weiß, dass dies nicht die vollständige Lösung ist und ich noch nicht getestet habe, aber es kann helfen.

Zuerst habe ich nach einer Powershell-Lösung gesucht und folgende Fragen gefunden:

Sie verwenden EnvDTE die COM-Bibliothek, die die Objekte und enthält Mitglieder für Visual Studio-Kernautomatisierung .

Ich konnte keine Ressourcen finden, um es zu verwenden, außer dies von CodeProject Expusing EnvDTE .

%Vor%

Da Sie Grunt für die Automatisierung Ihrer Aufgaben verwenden möchten. Sie können sich Edge - .NET für Node.js ansehen.

%Vor%     
Victor 03.08.2013 09:56
quelle
0

Sie können auch ein Powershell-Skript für Ihre Projektdatei ausführen. Wir benutzen das schon lange.

AddContentToProject.ps1

%Vor%

Dann führe dies mit der Powershell

aus %Vor%

Oder dies von der Eingabeaufforderung

%Vor%     
Kerem Demirer 21.11.2016 19:29
quelle