2010-09-07 11 views
17

Ho un progetto di test dell'unità che contiene alcuni file XML per i test basati sui dati. Questi file sono impostati su Build Action Content e Copia se più recente o Copia sempre.Visual Studio non ricompilato dopo la modifica del file del contenuto

Per la maggior parte, questo funziona bene. Tuttavia, quando cambio uno dei file di dati senza modificare alcun codice, Visual Studio non attiverà alcuna azione di compilazione e nessun file XML verrà copiato. Effettivamente, sto facendo funzionare i miei test unitari con il vecchio file di dati.

Posso attivare una compilazione manuale, ma mi piacerebbe evitare tali errori se possibile. C'è un modo per rendere Visual Studio (2008) eseguire l'operazione di copia ogni volta che qualcuno cambia i file di contenuto solo?

Per chiarire: Il file XML si trova all'interno del progetto di test dell'unità, non nel progetto del codice di produzione. Ho un importante attributo [DeploymentItem] per il set di file sul test eseguito.

+0

In che cosa stai eseguendo i test unitari? Visual Studio (mstest)? NUnit? Se è 'mstest', dai un'occhiata a [Come posso ottenere" Copia nella directory di output "per lavorare con i Test di unità?] (Http://stackoverflow.com/questions/227545/how-can-i-get- copy-to-output-directory-to-work-with-unit-tests) –

risposta

1

Questa sembra una semplice risposta, quindi per favore perdonami se l'hai già fatto. Tuttavia, avevo questo problema dopo aver modificato le origini dati dei file di testo.

Per risolvere questo problema, ho dovuto pulire il progetto dopo ogni modifica che era fastidiosa per un grande progetto su cui stavo lavorando.

Questo smesso di essere necessario, una volta ho finito per installare VS2008 su una nuova copia di Windows, quindi potrebbe essere un problema di configurazione.

1

Prima di eseguire i test, Visual Studio richiama MSBuild sul progetto con la destinazione Crea e verifica. Se si esamina Microsoft.CSharp.targets (vedere http://msdn.microsoft.com/en-us/library/ms164312.aspx), è possibile tenere traccia del modo in cui i file dal gruppo di voci di contenuto vengono copiati come parte del processo di bulild. AFAIK, sono dichiarati input e output di uno dei sub-target Bulild, quindi MSBuild dovrebbe davvero prendere in considerazione la possibilità di copiarli se i loro timestamp sono cambiati.

si può garantire che: * modifiche ai file vengono salvati * si utilizza NTFS * quando si esegue la build dal MSBuild cmd-line, non ancora non ricostruire quando un file xml cambiato?

Visual Studio L'integrazione di MSBuild è piuttosto frammentaria, non fa ovviamente la semplice operazione di invocazione della riga di cmd MSBuild. (Ha problemi con le importazioni che vengono memorizzate nella cache e ogni sorta di cose pazze e non intuitive).

1

Non so se sarà di aiuto nella tua situazione ma per aggirare questo ho modificato l'azione di Build dei miei file XML su Embedded Resource e sembrava che facesse il trucco.

+0

Sembra un hack, ma sembra funzionare effettivamente su VS2010. –

Problemi correlati