Come si rimuove la configurazione di un progetto in Visual Studio 2008?


97

Ho una soluzione Visual Studio 2008 in cui ho importato una serie di progetti preesistenti. I progetti sono codice di esempio in linguaggio misto (C #, VB, C ++ / CLI). Attualmente hanno più configurazioni, ma desidero che ogni progetto abbia solo una singola configurazione "Debug".

Nel Configuration Manager, ho cancellato le altre configurazioni (es. "Release"), ma mentre lo facevo c'era un messaggio di avviso per dirmi che non sarebbero state cancellate dai singoli progetti.

E infatti quando passo a un singolo progetto, ha ancora "Release" e altre configurazioni, anche se a livello di soluzione c'è solo "Debug".

Come posso rimuovere al meglio queste configurazioni extra da ogni progetto? Sto trascurando un modo per farlo nella GUI o dovrei semplicemente modificare direttamente i file di progetto?

Risposte:


191

In Configuration Manager, seleziona "Modifica ..." nella colonna "Configurazione" per ogni progetto (non tramite il menu a discesa denominato Configurazione della soluzione attiva) che contiene le configurazioni che desideri rimuovere.

Nella finestra di dialogo che si apre, contrassegna ogni configurazione indesiderata e seleziona "Rimuovi".


22
Grazie! Vorrei che Visual Studio offrisse un modo più rapido per rimuovere una configurazione in tutti i progetti. Se hai una dozzina di progetti o giù di lì in una soluzione, è una seccatura passare attraverso ciascuno di essi ed eliminare manualmente la configurazione.
Stefano Ricciardi

1
@ Matthias supplico di differire. E no, non è stato cambiato (da quando ho risposto a questa domanda nel 2009 fino alla versione 2013).
Timbo

1
Se vado a Configuration Manager, elimino una configurazione della soluzione attiva tramite modifica, la configurazione viene effettivamente rimossa da Configuration Manager. Ma se ora vai alle proprietà del tuo progetto, la configurazione è ancora lì. Se guardi all'interno dei file .vcxproj, la configurazione è ancora lì. Uso Visual Studio 2013 (Professional e Ultimate)
Matthias

1
@ Matthias Leggi attentamente (soprattutto la parte per ogni progetto ). Forse la parola scelta / ordine nella mia risposta non è adeguatamente ottimizzata per la migliore comprensibilità, ma ciò non cambia se funziona o meno.
Timbo

1
@Stefano Ricciardi 5 anni dopo, hai trovato una soluzione a tanto dolore?
cpp Beginner

10

Per aiutare a illustrare la risposta di Timbo, ecco di cosa sta parlando. Come alcuni dei commentatori, mi ci è voluto un po 'per trovarlo.

inserisci qui la descrizione dell'immagine


8

Il modo migliore per automatizzare la rimozione di una configurazione da tutti i progetti di una soluzione è quello di utilizzare il comando della console Nuget per accedere alle API di Visual Studio.

Vai a Strumenti , Gestione pacchetti Nuget , Console di Gestione pacchetti .

Da lì usa:

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

In questo modo hai rimosso tutte le configurazioni da tutti i progetti chiamati "Release". Ti consiglio caldamente di controllare sempre le differenze sul tuo sistema di versioning del codice sorgente, vedrai solo csproje in alcuni casi i slnfile interessati, se stai usando trasformazioni di configurazione (come Web.Release.config) saranno ancora lì.

Ulteriori informazioni sono disponibili nella documentazione dell'API specifica della versione di Visual Studio qui , funziona almeno da VS 2015 per i linguaggi C ++, C #, F # e VB.


Potete fornire qualche riferimento, ad esempio come avete inventato questo codice? Ci sono tutorial? Voglio assicurarmi che non interrompa il mio progetto, essere in grado di mantenerlo da solo e probabilmente usarlo per altre cose.
javaLover

Grazie! Ho notato che l'albero dell'argomento (parte superiore della pagina) nel tuo link è Docs > .NET > ... > DeleteConfigurationRow. Funziona solo per la soluzione .net? Lo hai testato anche per la soluzione C ++?
javaLover

Non ha funzionato in VS2019 sulla mia soluzione C ++: Errore HRESULT E_FAIL è stato restituito da una chiamata a un componente COM. Alla riga: 1 carattere: 30 + ... | Foreach {$ _. ConfigurationManager.DeleteConfigurationRow ("DLL-Impor ... + CategoryInfo: OperationStopped: (:) [], COMException + FullyQualifiedErrorId: System.Runtime.InteropServices.COMException Error HRESULT E_FAIL è stato restituito da una chiamata a un COM componente. Alla riga: 1 carattere: 30 + ... | Foreach {$ _. ConfigurationManager.DeleteConfigurationRow ("DLL-Impor ...
Terry

Ha funzionato bene per me, soluzione di progetti C ++. Grazie per il consiglio!
Nordic Mainframe

3

Non risponde a questa particolare domanda, lo so, ma con VS2013 è possibile aprire la scheda Property Manager, espandere tutte le configurazioni del progetto, effettuare selezioni multiple utilizzando i tasti CTRL o MAIUSC ed eliminare le configurazioni da più progetti contemporaneamente.


È solo per progetti C ++? Immagino che la scheda a cui ti riferisci sia "Visualizza> Altre finestre> Gestore proprietà"?
Steven Anderson

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.