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?

Eric
źródło

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ń”.

Timbo
źródło
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

Tom Winter
źródło
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.

Giulio Caccin
źródło
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.

scott_ish
źródło
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
1

W VS2017 / VS2019, jeśli rozwiniesz „Aktywną konfigurację rozwiązania”, jest tam <edycja>, która pozwala usunąć konfigurację ze wszystkich projektów.

Zrzut ekranu pokazujący <edytuj>

PolicyWatcher
źródło