2009-06-30 15 views
37

Siamo due aziende che stanno lavorando sullo stesso progetto, nella stessa applicazione. Su base settimanale si scambiano solo i nostri assembly (non il codice) e fanno riferimento a ciascun altro dll..net referenceversion specifica vero o falso?

Qual è la migliore pratica relativa allo specificversion quando si aggiunge riferimento al nostro progetto. In particolare, quando si dovrebbe utilizzare un valore di specificversiontrue e nel quale caso dovremmo utilizzare false.

+0

In generale, è opportuno fare riferimento a versioni precise delle dipendenze, per evitare [software rot] (https://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts). Ecco perché Ruby ha 'Gemfile.lock', Python' requirements.txt' e Nodejs 'npm-shrinkwrap.json'. –

+0

Vedere anche http://stackoverflow.com/a/24022135/284795 "Una delle cose più importanti da sapere è che SpecificVersion è una proprietà che ha effetto in fase di compilazione e non in fase di runtime." –

risposta

47

Questa risposta sarà basata sul presupposto che si sta eseguendo il controllo delle versioni delle DLL.

Se si imposta SpecificVersion su true (che è l'impostazione predefinita quando si aggiunge un riferimento), il progetto farà riferimento a tale DLL con una versione particolare (ad esempio, per esempio 1.0.0.0). Se, in un secondo momento, ti viene assegnata una nuova DLL (ad esempio 1.0.1.0), dovrai rimuovere il vecchio riferimento alle DLL e aggiungere il nuovo riferimento. Questo perché il progetto cerca specificamente 1.0.0.0 quando si ha una nuova versione 1.0.1.0.

L'alternativa è impostare la versione specifica su false, che indica al progetto di trovare l'ultima DLL disponibile e di utilizzarla. Il problema è che ora il progetto è obbligato a "cacciare" in vari punti per la dll a cui hai fatto riferimento, il che può aumentare il tempo di costruzione. Lo farà anche se conosce il percorso della DLL a cui hai fatto riferimento. Non sono sicuro se questo è un bug o se questo è fatto in base alla progettazione. Potrebbe verificare se ci sono delle DLL più recenti oltre a quella a cui hai fatto riferimento (forse nel GAC o altrove).

Ecco uno article che descrive questo problema in modo più dettagliato.

+0

dovremmo considerare gli assembly provenienti dall'altra azienda che accoppiano liberamente il numero di versione? Voglio dire, è una buona pratica impostare la versione specifica su false e rilasciare la nuova dll (con un nuovo numero di versione) quando si è verificata l'integrazione settimanale? – sptremblay

+0

BTW, basta leggere il riferimento sull'articolo e mi ha dato molte informazioni. Grazie. – sptremblay

Problemi correlati