Wie entferne ich eine Projektkonfiguration in Visual Studio 2008?

97

Ich habe eine Visual Studio 2008-Lösung, in die ich eine Reihe bereits vorhandener Projekte importiert habe. Die Projekte sind gemischter Beispielcode (C #, VB, C ++ / CLI). Sie haben derzeit mehrere Konfigurationen, aber ich möchte, dass jedes Projekt nur eine einzige "Debug" -Konfiguration hat.

Im Konfigurationsmanager habe ich die anderen Konfigurationen gelöscht (z. B. "Release"). Dabei wurde jedoch eine Warnmeldung angezeigt, dass sie nicht aus den einzelnen Projekten gelöscht werden.

Und tatsächlich, wenn ich zu einem einzelnen Projekt navigiere, hat es immer noch "Release" und andere Konfigurationen, obwohl es auf Lösungsebene nur "Debug" gibt.

Wie kann ich diese zusätzlichen Konfigurationen am besten aus jedem Projekt entfernen? Übersehe ich eine Möglichkeit, dies in der GUI zu tun, oder sollte ich die Projektdateien einfach direkt bearbeiten?

Eric
quelle

Antworten:

191

Wählen Sie im Konfigurationsmanager "Bearbeiten ..." in der Spalte "Konfiguration" für jedes Projekt aus (nicht über die Dropdown-Liste "Aktive Lösungskonfiguration"), dessen Konfigurationen Sie entfernen möchten.

Markieren Sie im daraufhin angezeigten Dialogfeld jede unerwünschte Konfiguration und wählen Sie "Entfernen".

Timbo
quelle
22
Danke dir! Ich wünschte, Visual Studio bietet eine schnellere Möglichkeit, eine Konfiguration über alle Projekte hinweg zu entfernen. Wenn Sie ungefähr ein Dutzend Projekte in einer Lösung haben, ist es schwierig, jedes einzelne durchzugehen und die Konfiguration manuell zu löschen.
Stefano Ricciardi
1
@ Matthias Ich bitte um Unterschied. Und nein, es wurde nicht geändert (von der Beantwortung im Jahr 2009 bis zur Version 2013).
Timbo
1
Wenn ich zum Konfigurationsmanager gehe und eine aktive Lösungskonfiguration über Bearbeiten lösche, wird die Konfiguration tatsächlich aus dem Konfigurationsmanager entfernt. Wenn Sie jetzt zu den Eigenschaften Ihres Projekts wechseln, ist die Konfiguration noch vorhanden. Wenn Sie in die .vcxproj-Dateien schauen, ist die Konfiguration noch vorhanden. Ich benutze Visual Studio 2013 (Professional und Ultimate)
Matthias
1
@Matthias Lesen Sie sorgfältig (insbesondere den Teil für jedes Projekt ). Vielleicht ist die Wortwahl / -reihenfolge in meiner Antwort nicht richtig für die beste Verständlichkeit optimiert, aber das ändert nichts daran, ob dies funktioniert oder nicht.
Timbo
1
@Stefano Ricciardi 5 Jahre später, haben Sie eine Lösung für solche Schmerzen gefunden?
cppBeginner
10

Um Timbos Antwort zu veranschaulichen, spricht er hier über Folgendes. Wie bei einigen Kommentatoren habe ich eine Weile gebraucht, um dies zu finden.

Geben Sie hier die Bildbeschreibung ein

Tom Winter
quelle
8

Der beste Weg, um das Entfernen einer Konfiguration aus allen Projekten einer Lösung zu automatisieren, ist die Verwendung des Nuget-Konsolenbefehls, um auf Visual Studio-APIs zuzugreifen.

Gehen Sie zu Tools , Nuget Package Manager , Package Manager Console .

Von dort verwenden:

Get-Project -All | Foreach { $_.ConfigurationManager.DeleteConfigurationRow("Release") }

Auf diese Weise haben Sie alle Konfigurationen aus allen aufgerufenen Projekten entfernt "Release". Ich empfehle Ihnen dringend, immer die Unterschiede in Ihrem Quellcode-Versionssystem zu überprüfen. Sie sehen nur csprojund in einigen Fällen slnbetroffene Dateien, wenn Sie Konfigurationstransformationen (wie Web.Release.config) verwenden, sind diese weiterhin vorhanden.

Weitere Informationen finden Sie in der version-spezifischen API-Dokumentation von Visual Studio hier . Dies funktioniert ab mindestens VS 2015 für die Sprachen C ++, C #, F #, VB.

Giulio Caccin
quelle
Können Sie eine Referenz angeben, z. B. wie Sie auf diesen Code gekommen sind? Gibt es ein Tutorial? Ich möchte sicherstellen, dass mein Projekt nicht beschädigt wird, dass ich es selbst warten kann und es wahrscheinlich für andere Zwecke verwenden kann.
JavaLover
Danken! Ich habe festgestellt, dass der Themenbaum (oben auf der Seite) in Ihrem Link lautet Docs > .NET > ... > DeleteConfigurationRow. Funktioniert es nur für .net-Lösungen? Haben Sie es auch für die C ++ - Lösung getestet?
JavaLover
Funktionierte in VS2019 auf meiner C ++ - Lösung nicht: Fehler HRESULT E_FAIL wurde von einem Aufruf einer COM-Komponente zurückgegeben. In Zeile: 1 Zeichen: 30 + ... | Foreach {$ _. ConfigurationManager.DeleteConfigurationRow ("DLL-Impor ... + CategoryInfo: OperationStopped: (:) [], COMException + FullyQualifiedErrorId: System.Runtime.InteropServices.COMException-Fehler HRESULT E_FAIL wurde von einem Aufruf an COM zurückgegeben Komponente. In Zeile: 1 Zeichen: 30 + ... | Foreach {$ _. ConfigurationManager.DeleteConfigurationRow ("DLL-Impor ...
Terry
Hat für mich gut funktioniert, Lösung von C ++ - Projekten. Danke für den Tipp!
Nordic Mainframe
3

Beantwortet diese spezielle Frage, die ich kenne, nicht, aber mit VS2013 können Sie die Registerkarte Property Manager öffnen, alle Projektkonfigurationen erweitern, mit den Tasten STRG oder UMSCHALT mehrere Auswahlen durchführen und Konfigurationen aus mehreren Projekten gleichzeitig löschen.

schottisch
quelle
Gilt das nur für C ++ - Projekte? Ich denke, die Registerkarte, auf die Sie sich beziehen, ist "Ansicht> Andere Windows> Eigenschaften-Manager".
Steven Anderson
1

Wenn Sie in VS2017 / VS2019 die "Active Solution Configuration" ablegen, gibt es dort ein <edit>, mit dem Sie eine Konfiguration aus allen Projekten entfernen können.

Screenshot mit <edit>

PolicyWatcher
quelle