Wie erstellt man programmgesteuert Visual Studio Solution (.sln) -Dateien, einschließlich Website-Projekte?

8

Ich arbeite an einem Codegeneratorprojekt, das eine Lösung mit anpassbaren Layern erstellt. Momentan kann ich die .sln-Datei erstellen, indem ich alle Elemente im Code schreibe. Die Projektdateien benötigen dies jedoch nicht, sie können mit der MSBuild-Projektklasse bearbeitet werden.

Ich möchte eine Website Projektvorlage Unterstützung und etc hinzufügen, so dass ich die SLN-Datei bearbeiten nicht cool ist, wollte ich wissen, dass es eine bessere Möglichkeit, dies zu tun, wie MSBuild oder etwas anderes?

Ich habe Visual Studio Solution zum Verwenden von Visual Studio SDK ( das ist für die Erweiterung von Visual Studio, das Schreiben von Plugins ...), aber es gibt kein Codebeispiel.

Danke im Voraus

    
Ashkan 05.01.2012, 12:13
quelle

3 Antworten

5

So verwenden Sie SLNTools zum Erstellen einer SLN-Datei im Code. Der Code ist ein Chaos! Aber es funktioniert!

Das Projekt SLN Tools kann eine SLN-Datei aus Projektdateien erstellen. Es ist Open Source und bietet eine Benutzeroberfläche zum Bearbeiten und Zusammenführen von SLN-Dateien. In diesem Fall können Sie das Kernprojekt verwenden und indem Sie auf die 'CWDev.SLNTools.Core.dll' in Ihrem Projekt verweisen, können Sie einen unordentlichen (!) Code wie diesen schreiben:

HINWEIS : Einige Teile der Klasse werden hier nicht angezeigt. Außerdem gibt es einige benutzerdefinierte Objekte meines eigenen Projekts wie Sln, Project und ..., die nicht mit SLNTools-Objekten gleichen Namens verwechselt werden sollten. Ich kommentierte wo immer nötig!

%Vor%

Ich hoffe, es hilft.

    
Ashkan 14.09.2012, 07:34
quelle
1

Sie können die Schnittstelle IVsSolution verwenden, um Lösungen zu erstellen und fügen Sie ihnen Projekte hinzu. Sie übergeben den SVsSolution -Typ an Methode GetService () um eine Instanz dieser Schnittstelle zu erhalten:

%Vor%     
Charles Lambert 06.01.2012 00:09
quelle
0

In meinen Lösungsdateien werden Website-Projekte im Projektabschnitt WebsiteProperties gespeichert. Diese Eigenschaften werden je nach Buildkonfiguration als Eingabeparameter in den aspnet_compiler übergeben. Versuchen Sie in Ihren sln-Dateien, die das website project enthalten, nach projectID (GUID) (C9683FA5-AABA-497F-B780-80EFC3EB81F2 in diesem Fall) zu suchen, welche Teile der sln-Datei von Ihrem Codegenerator aktualisiert / generiert werden sollten.

%Vor%

Sie sollten (mindestens) ProjectConfigurationPlatforms & amp; NestedProjects globale Abschnitte. Dies wurde in meinem Fall benötigt.

Ich habe Merge-Lösung-MsBuild-Task implementiert. Es unterstützt das Zusammenführen mehrerer Lösungsdateien in die eine MergedSolution.sln-Datei. Es funktioniert in unseren 20+ Lösungsdateien, die mehr als 500 Projekte enthalten (c # & amp; Website & amp; sql db Projektdateien / Abschnitte). Die Größe der Ausgabedatei beträgt 1,3 MB.

BEARBEITEN: Das SLN Tools-Projekt kann eine SLN-Datei aus Projektdateien erstellen.

So generieren Sie eine SLN-Datei mit einer benutzerdefinierten MSBuild-Aufgabe:

  • Hier finden Sie Informationen zum Format von Projektmappen und -lösungen.
  • Wenn Sie über eine Reihe von Projektdateien verfügen, können Sie Ihre Lösungsdatei generieren durch benutzerdefinierte MSBuild-Aufgabe (innerhalb der Execute-Methode)
  • Um MSBuild-Projektdateien zu lesen, verwenden Sie Microsoft.Build.BuildEngine.Project Klasse (es ist veraltet, aber ich benutze es immer noch) oder Microsoft.Build.Evaluation.Project-Klasse
Ludwo 05.01.2012 23:44
quelle