2009-05-26 15 views
8

Ho un file di soluzione di Visual Studio (2005) con 70 progetti.
Ogni volta che premo F5 per eseguirlo, mi dice che 4 dei progetti non sono aggiornati e mi chiede se voglio ricostruirli. Lo fa anche se ho appena fatto una compilazione completa.
Comprendo (in linea di principio) che uno degli altri progetti deve aggiornare qualcosa di cui questi progetti dipendono, ma come faccio a scoprire cosa?Come correggere il messaggio "progetti non aggiornati" di Visual Studio ogni volta che lo eseguo

Esistono strumenti per aiutare o quale procedura devo seguire per capire cosa sta causando la VS a contrassegnare questi progetti per una ricostruzione?

UPDATE:
Per chi è interessato sembra che il mio PC sia/è il problema (il mio HD si è comportato di recente). Mentre cercavo di rintracciare il problema, le successive ricostruzioni hanno iniziato a generare errori di compilazione. Ho fatto un clean-and-build e ho ottenuto un numero enorme di errori (ovviamente spuri). Un riavvio successivo, seguito da una ricostruzione, tutti gli errori e il problema delle dipendenze sono andati via.
Scusami ora, mentre vado a fare il backup di tutti i miei file importanti ...

+1

Un buon modo per eseguire il debug di questo problema è dettagliata qui: http://stackoverflow.com/questions/2762930/vs2010-always-thinks-project-is-out-of-date-but-nothing- è cambiato – Ben

risposta

7

Avrei eseguito una normale build, due volte di seguito. La seconda volta, avrei impostato la verbosità di MSBUILD su "Normale" o superiore (in Strumenti-> Opzioni, "Progetti e soluzioni", "Costruisci ed esegui" .Vorrei leggere attentamente l'output per vedere cosa viene effettivamente realizzato seconda volta

In effetti, ora che ci penso, se questo è davvero un ciclo, allora una parte di ciò che viene costruito la seconda volta deve essere ciò che sta causando la costruzione della terza volta, ecc. Forse hai una fase post-build in uno dei progetti che tocca un assieme o un'altra risorsa utilizzata come input per un passaggio precedente.Con 70 progetti nella soluzione, qualcosa del genere sarebbe facile da causare inavvertitamente e difficile da catturare. per imparare abbastanza su MSBUILD per essere in grado di rilevare quando uno dei suoi passi sta decidendo che deve essere costruito perché qualcosa è cambiato, quindi capire la tua soluzione abbastanza bene da sapere che nulla dovrebbe essere cambiato, quindi per vedere quel qualcosa g ha modificato che non dovrebbe essere cambiato.

Quando hai terminato questo esercizio, potresti aver ottenuto alcune informazioni che ti permetteranno di aiutare a rompere la soluzione in soluzioni più piccole.

1

Ho avuto lo stesso problema con il collegamento di un .netmodule nel mio progetto che è stato rispettato con un passaggio di generazione personalizzato. Il prolem si è rivelato che stavo anche collegando una lib di C++ e il file .netmodule era elencato sulla stessa riga nell'input del linker.

Esempio: Lib .netmodule

Insead di: lib \ n .netmodule

1

Un modo più veloce di registro di dettaglio Giovanni in Visual Studio 2013, è quello di aprire albero del progetto del Esplora soluzioni; i file che non sono stati trovati non avranno il triangolino davanti al nome del file (con il quale normalmente puoi vedere una lista di simboli in quel file).

Rimuovere quei file e per me, il messaggio AlwaysCreate è andato via (si vede solo 'AlwaysCreate' quando il livello dettagliato è impostato su 'Normal').

1

Ho avuto questo problema e ho scoperto che avevo un file di intestazione aggiunto al mio progetto ma che avevo cancellato dal disco. Rimozione del file di intestazione inesistente dal corregge il comportamento.

1

Ho avuto questo problema esatto in VS2010 dopo aver eliminato alcuni file sorgente che non erano più utilizzati nel mio progetto. Semplicemente selezionando "Clean Solution" dal menu "Build" e poi ricostruendo la soluzione, il problema è stato risolto.