2009-06-30 4 views
37

Wir sind zwei Unternehmen, die an demselben Projekt in der gleichen Anwendung arbeiten. Auf einer wöchentlichen Basis tauschen wir nur unsere Versammlungen (nicht den Code) aus und verweisen gegenseitig auf die DLL..net Referenz spezifische Version wahr oder falsch?

Was ist die beste Vorgehensweise in Bezug auf die specificversion beim Hinzufügen von Verweis auf unser Projekt. Spezifisch, wann sollten wir einen specificversion Wert von true verwenden und in welchem ​​Fall sollten wir false verwenden.

+0

Im Allgemeinen ist es gut, präzise Versionen Ihrer Abhängigkeiten zu referenzieren, um sich gegen [software rot] zu schützen (https://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts). Aus diesem Grund hat Ruby 'Gemfile.lock', Python' requirements.txt' und Nodejs 'npm-shrinkwrap.json'. –

+0

Siehe auch http://stackoverflow.com/a/24022135/284795 "Eines der wichtigsten Dinge zu wissen ist, dass SpecificVersion eine Eigenschaft ist, die zum Zeitpunkt der Kompilierung und nicht zur Laufzeit wirksam wird." –

Antwort

47

Diese Antwort basiert auf der Annahme, dass Sie Ihre DLLs versionieren.

Wenn Sie SpecificVersion auf true setzen (was beim Hinzufügen eines Verweises der Standard ist), verweist das Projekt auf diese DLL mit einer bestimmten Version (etwa 1.0.0.0). Wenn Sie zu einem späteren Zeitpunkt eine neue DLL (z. B. 1.0.1.0) erhalten, müssen Sie die alte DLL-Referenz entfernen und die neue Referenz hinzufügen. Dies liegt daran, dass das Projekt speziell nach 1.0.0.0 sucht, wenn Sie eine neue Version 1.0.1.0 haben.

Die Alternative dazu ist, die SpecificVersion auf false zu setzen, was dem Projekt mitteilt, die neueste verfügbare DLL zu finden und diese zu verwenden. Das Problem dabei ist, dass das Projekt nun an verschiedenen Stellen nach der referenzierten DLL "suchen" muss, was die Build-Zeit erhöhen kann. Es wird dies tun, obwohl es den Pfad der DLL kennt, auf die Sie verwiesen haben. Ich bin mir nicht sicher, ob das ein Fehler ist oder ob dies vom Design her geschieht. Es kann sein, zu überprüfen, ob es neuere dlls neben dem gibt, auf den Sie verwiesen haben (vielleicht in der GAC oder woanders).

Hier ist eine article, die dieses Problem im Detail beschreibt.

+0

sollten wir die Baugruppen von der anderen Firma lose Kopplung Versionsnummer betrachten? Ich meine, ist es eine gute Praxis, die spezifische Version auf false zu setzen und einfach die neue DLL (mit einer neuen Versionsnummer) fallen zu lassen, wenn die wöchentliche Integration stattgefunden hat? – sptremblay

+0

BTW, lesen Sie einfach Ihre Referenz auf den Artikel und gab mir eine Menge Informationen. Vielen Dank. – sptremblay

Verwandte Themen