Come impedire a Visual Studio di "sempre" estrarre i file della soluzione?


152

Apparentemente per nessun motivo, ogni volta che apro la mia soluzione, Visual Studio controlla il file sln.

Se lo confronto con la versione precedente non ci sono modifiche. Ma questo è davvero frustrante poiché tutti hanno verificato la soluzione.

Sto usando VS 2008 e TFS 2008, entrambi SP2.

Qualche idea su come posso impedire che ciò accada? O è una caratteristica / bug del provider di controllo del codice sorgente TFS per VS?


hai un progetto di unit test come parte della soluzione?
Mitch Wheat,

1
TFS supporta checkout simultanei e fintanto che non ci sono modifiche al file .sln, il checkout multiplo non è un problema.
Dirk Vollmar,

5
Quando i file * .sln presentano modifiche effettive, sono un incubo terribile da unire perché ai progetti all'interno vengono assegnati ID arbitrari ma non univoci. Sono un grande sostenitore dei checkout simultanei, ma tengo la maggior parte dei nostri * .sln bloccati.
Richard Berg,

3
QUESTO È RISOLTO IN VS2013 !!! Ho aperto la stessa soluzione nel 2012 e controlla .sln, aperto nel 2013 e rimane chiaro.
Felickz,

2
L'ho visto di volta in volta con tutte le versioni precedenti da Visual Studio 2010 e fino alla versione più recente, Visual Studio 2015 Update 3. Succede circa la metà delle volte in cui apro una soluzione e sembra essere più frequente per le soluzioni con molti progetti.
Tore Østergaard,

Risposte:


121

Ciò accade quando nel file .sln si trova quanto segue:

GlobalSection(ExtensibilityGlobals) = postSolution
    MyGlobalProperty = AnyValue
EndGlobalSection

Ho scoperto che Enterprise Library ha aggiunto uno di questi. L'ho rimosso, verificato la soluzione, chiuso quindi riaperto, e non più check out automatico.


21
Sembra che il pacchetto Unity NuGet potrebbe averlo fatto nel mio file di soluzione in VS 2010. Ho rimosso questa sezione e il mio problema di checkout automatico è stato risolto. Grazie Graham!
Dan Mork,

14
due delle mie tecnologie preferite - TFS ed EntLib - che coppia di cari.

1
Ho una sezione del genere ma non desidero rimuoverla poiché contiene dati che voglio conservare - e adesso? MS ha chiuso questo problema come "non riproducibile" - stupido? connect.microsoft.com/VisualStudio/feedback/details/573538/…
mattanja

Il commento di Dan aggiunge le informazioni necessarie - non è necessario rimuovere tutte le sezioni globali - solo la parte che sembra essere aggiunta dal pacchetto unità nuget.
Jordan0

sempre lo stesso nel 2012
BlackICE,

6

Dalla memoria, se si utilizza il menu Strumenti, Opzioni e si seleziona il pannello Controllo sorgente, Ambienti , ci dovrebbero essere alcune opzioni per configurare il modo in cui l'IDE si interfaccia con il controllo versione.

Penso che alcune di queste opzioni controllino il checkout sul comportamento aperto .


1
sì ... ti permettono di effettuare il checkout automaticamente, richiedere il checkout o non fare nulla ... ma nulla che aiuti con questo problema
CodeClimber

non puoi semplicemente dire "no, non fare il check-out" quando ti viene richiesto?
Scott Marlowe,

Vorrei essere l'unico sviluppatore del team ... sfortunatamente non posso fare affidamento sul fatto che tutti gli sviluppatori siano diligenti
CodeClimber,

CodeClimber, ogni volta che si avvia VS esegue un check out automatico e si desidera che si interrompa e la disattivazione del check out automatico non risolve il problema. Cosa?
veight

1
Per coloro che non hanno "Ambienti" nel loro elenco di opzioni, cambia la tua connessione da "Locale" a "Server" (fonte: stackoverflow.com/questions/26843300/… )
VenerableAgents

5

Nel caso, come me, non riuscissi a farlo funzionare e scopri che anche uno o più progetti vengono controllati, ho trovato una soluzione più semplice. Prendi nota dei progetti che continua a verificare. Vai a File - Controllo del codice sorgente - Cambia controllo del codice sorgente, quindi separa i progetti in questione. Fare clic su OK, Salva tutto, quindi tornare a Modifica controllo del codice sorgente e associare il progetto alla soluzione. Spero che questo funzioni per gli altri



3

Consentire il check-out e quindi confrontare entrambi i file. Se VS ha aggiunto qualcosa di simile

<Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />

stai riscontrando un bug VS con una soluzione in VS2008 ma non trasferito su VS2005

Controlla questo link per ulteriori dettagli:


Nessun progetto nella soluzione ha questa linea di XML
CodeClimber,

2

Il file della soluzione di Visual Studio viene eseguito il check-out silenzioso tramite uno o più progetti della soluzione utilizzando Microsoft Enterprise Library: credo che ciò abbia a che fare con l'utility di configurazione della libreria Enterprise che consente la gestione della configurazione dei vari blocchi applicazione - http : //msdn.microsoft.com/en-us/library/ff649479.aspx

Vedi questo post di Microsoft Feedback: http://connect.microsoft.com/VisualStudio/feedback/details/737184/globalsection-extensibilityglobals-postsolution-checks-out-sln-file-on-open


grazie per il link Nigel, tutto il team sta riscontrando questo problema
Baldy,

1

È una caratteristica / bug di uno dei sistemi di progetto caricati all'interno della soluzione. Prova a rimuovere vari tipi di progetti (C #, VB, C ++, sito Web, app Web, unit test, silverlight ...) fino a quando non scompare; questa è la tua risposta.


0

Stai salvando i tuoi file prima di fare il confronto? È successo con me qualche tempo fa e continuo a dire che non ci sono cambiamenti tra i file, ma dopo un po 'mi rendo conto che non stavo salvando i file prima e si stava confrontando con la versione su disco, non con la versione in memoria.

Ogni volta che apri una soluzione in Visual Studio, esegue alcune operazioni che possono causare la modifica dei tuoi file .sln o di progetto e ti chiederà di estrarre il file. Succede quando ci sono cambiamenti nella struttura delle cartelle nel computer degli sviluppatori o quando non hanno le stesse versioni di tutti i file. Forse qualcuno ha aggiunto un progetto in una cartella e un altro sviluppatore ha lo stesso progetto in un altro posto. Un altro caso che vedo accadere è stato quando abbiamo una soluzione con alcuni progetti c ++, per qualche ragione, uno di questi progetti c ++ aveva un file .res con percorsi assoluti. Una volta che questo file è stato generato automaticamente da VS, ha continuato a cambiare da macchina sviluppatore a macchina sviluppatore.

Ti suggerirei di aprire il tuo file .sln e cercare alcuni percorsi assoluti o percorsi relativi che potrebbero non esistere in alcune macchine sviluppatore, a seconda dei file che ottengono dal tuo controllo del codice sorgente.

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.