c'è un'altra soluzione a questo problema se non hai bisogno di aggiornamento del database incrementale. Quindi se ricreare il database per ogni build è ok con te anche il seguente potrebbe funzionare.
Aggiungi un target deploy di file di progetto di database
Configurare le impostazioni di distribuzione per ‘My project settings
’. Tali impostazioni verranno quindi utilizzate dal build server durante la creazione della soluzione. Quando si costruisce localmente, le impostazioni utilizzate saranno quelle di "My isolated development environment
".
- nelle proprietà del progetto di database
Deploy azione deve essere ‘Create a deployment script (.sql) and deploy the database
’; questo impedirà l'esecuzione dello script, lo creerà solo.
- file di progetto di database
Modificare il file di progetto di database (progetto di database tasto destro del mouse, selezionare Scarica, fare clic destro di nuovo, selezionare Modifica [ProjectName].dbproj) da
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
Per
<Project DefaultTargets="Build;Deploy" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
Quando il server Corporatura costruisce la soluzione contenente il progetto di database, aggiungendo gli obiettivi di default sarà anche distribuire il database. Questa build utilizzerà le impostazioni di distribuzione selezionate per "My project settings
".
Pro
Contro
- Perché la destinazione predefinita viene modificata per creare e distribuire, quando uno sviluppatore fare un locale Rebuild della soluzione, distribuirà anche il database (l'edificio solo non attiverà la distribuzione)
Grazie mille per la risposta! Mi ero perso quell'articolo e non avevo mai veramente risolto questo problema. –
Sono solo io o è quasi impossibile quando si fa una compilazione notturna? –
Per essere onesti, ho rinunciato all'uso del team build per distribuire i DB. Ho invece passato tutto il resto della notte per utilizzare un database di riferimento allegato a file SQL Express che manteniamo come parte del nostro processo di sviluppo; quando eseguiamo il check in del progetto DB, ci limitiamo ad usare lo schema compare per scrivere le modifiche al DB di riferimento. In questo modo possiamo usare i progetti di DB, assicurarci che essi "costruiscono" di notte, ma non devono lasciarsi andare alla deriva con la distribuzione del progetto DB. –