Jak usunąć konfigurację projektu w programie Visual Studio 2008?


98

Mam rozwiązanie Visual Studio 2008, do którego zaimportowałem kilka wcześniej istniejących projektów. Projekty są przykładowym kodem w różnych językach (C #, VB, C ++ / CLI). Obecnie mają wiele konfiguracji, ale chcę, aby każdy projekt miał tylko jedną konfigurację „debugowania”.

W menedżerze konfiguracji usunąłem inne konfiguracje (np. „Release”), ale gdy to zrobiłem, pojawił się komunikat ostrzegawczy informujący mnie, że nie zostaną one usunięte z poszczególnych projektów.

I rzeczywiście, kiedy przechodzę do pojedynczego projektu, nadal ma on „Release” i inne konfiguracje, mimo że na poziomie rozwiązania jest tylko „Debug”.

Jak najlepiej usunąć te dodatkowe konfiguracje z każdego projektu? Czy przeoczę jakiś sposób, aby to zrobić w GUI, czy powinienem po prostu edytować pliki projektu bezpośrednio?

Odpowiedzi:


191

W menedżerze konfiguracji wybierz opcję „Edytuj ...” w kolumnie „Konfiguracja” dla każdego projektu (nie za pośrednictwem listy rozwijanej o nazwie Konfiguracja aktywnego rozwiązania) zawierającej konfiguracje, które chcesz usunąć.

W wyświetlonym oknie dialogowym zaznacz każdą niechcianą konfigurację i wybierz opcję „Usuń”.


22
Dziękuję Ci! Chciałbym, żeby Visual Studio oferowało szybszy sposób usuwania konfiguracji ze wszystkich projektów. Jeśli masz kilkanaście projektów w rozwiązaniu, trudno jest przejść przez każdy z nich i ręcznie usunąć konfigurację.
Stefano Ricciardi

1
@Matthias, błagam się różni. I nie, to się nie zmieniło (od kiedy odpowiedziałem w 2009 roku do wersji 2013).
Timbo,

1
Jeśli przejdę do Configuration Manager, usunę aktywną konfigurację rozwiązania poprzez edycję, wtedy konfiguracja zostanie rzeczywiście usunięta z Configuration Manager. Ale jeśli przejdziesz teraz do właściwości swojego projektu, konfiguracja nadal istnieje. Jeśli zajrzysz do plików .vcxproj, oznacza to, że konfiguracja nadal istnieje. Używam Visual Studio 2013 (Professional i Ultimate)
Matthias

1
@Matthias Przeczytaj uważnie (szczególnie część dla każdego projektu ). Być może wybór / kolejność słów w mojej odpowiedzi nie jest odpowiednio zoptymalizowana pod kątem najlepszej zrozumiałości, ale to nie zmienia, czy to działa, czy nie.
Timbo,

1
@Stefano Ricciardi 5 lat później, czy znalazłeś rozwiązanie na taki ból?
cppBeginner

10

Aby pomóc zilustrować odpowiedź timbo, oto o czym mówi. Podobnie jak niektórym komentatorom znalezienie tego zajęło mi trochę czasu.

wprowadź opis obrazu tutaj


9

Najlepszym sposobem zautomatyzowania usuwania konfiguracji ze wszystkich projektów rozwiązania jest użycie polecenia konsoli Nuget w celu uzyskania dostępu do interfejsu API programu Visual Studio.

Przejdź do Narzędzia , Menedżer pakietów NuGet , Konsola Menedżera pakietów .

Stamtąd użyj:

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

W ten sposób usunąłeś wszystkie konfiguracje ze wszystkich projektów o nazwie "Release". Zdecydowanie sugeruję, aby zawsze sprawdzać różnice w systemie wersjonowania kodu źródłowego, zobaczysz tylko, csprojaw niektórych przypadkach slnpliki, których to dotyczy, jeśli używasz transformacji konfiguracji (takich jak Web.Release.config), nadal tam będą.

Więcej informacji można znaleźć w dokumentacji interfejsu API specyficznej dla wersji programu Visual Studio , która działa od co najmniej VS 2015 dla języków C ++, C #, F #, VB.


Czy możesz podać jakieś wskazówki, np. Jak wymyśliłeś ten kod? Czy jest jakiś tutorial? Chcę mieć pewność, że nie zepsuje to mojego projektu, będę w stanie sam go utrzymać i prawdopodobnie wykorzystam do innych rzeczy.
javaLover

Podziękować! Zauważyłem, że drzewo tematu (góra strony) w twoim linku to Docs > .NET > ... > DeleteConfigurationRow. Czy działa tylko w przypadku rozwiązania .net? Czy przetestowałeś go również pod kątem rozwiązania C ++?
javaLover

Nie działał w VS2019 w moim rozwiązaniu C ++: Błąd HRESULT E_FAIL został zwrócony z wywołania składnika COM. Na linii: 1 znak: 30 + ... | Foreach {$ _. ConfigurationManager.DeleteConfigurationRow ("DLL-Impor ... + CategoryInfo: OperationStopped: (:) [], COMException + FullyQualifiedErrorId: System.Runtime.InteropServices.COMException Błąd HRESULT E_FAIL został zwrócony z wywołania do modelu COM W wierszu: 1 znak: 30 + ... | Foreach {$ _. ConfigurationManager.DeleteConfigurationRow ("DLL-Impor ...
Terry

Działało dobrze, rozwiązanie projektów C ++. Dzięki za wskazówkę!
Nordic Mainframe

3

Nie odpowiada na to konkretne pytanie, które znam, ale w VS2013 możesz otworzyć zakładkę Property Manager, rozwinąć wszystkie konfiguracje projektów, dokonać wielokrotnego wyboru za pomocą klawiszy CTRL lub SHIFT i usunąć konfiguracje z wielu projektów jednocześnie.


Czy to tylko dla projektów C ++? Domyślam się, że zakładka, do której się odnosisz, to „Widok> Inne okna> Menedżer właściwości”?
Steven Anderson

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.