2009-06-30 15 views
37

Somos dos compañías que estamos trabajando en el mismo proyecto, en la misma aplicación. Cada semana intercambiamos solo nuestros ensamblajes (no el código) y nos referimos al dll de los demás..net reference specificversion true or false?

¿Cuál es la mejor práctica con respecto al specificversion al agregar una referencia a nuestro proyecto. Específicamente, cuando deberíamos usar un valor de specificversiontrue y en qué caso deberíamos usar false.

+0

En general, es bueno hacer referencia a versiones precisas de sus dependencias, para protegerse contra [software rot] (https://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts). Es por eso que Ruby tiene 'Gemfile.lock', Python' requirements.txt' y Nodejs 'npm-shrinkwrap.json'. –

+0

Véase también http://stackoverflow.com/a/24022135/284795 "Una de las cosas más importantes que debe saber es que SpecificVersion es una propiedad que tiene efecto en tiempo de compilación y no en tiempo de ejecución". –

Respuesta

47

Esta respuesta se basará en la suposición de que está versionando sus dlls.

Si establece SpecificVersion en true (que es el valor predeterminado al agregar una referencia), el proyecto hará referencia a ese dll con una versión particular (digamos por ejemplo 1.0.0.0). Si, en un momento posterior, se te da un dll nuevo (digamos 1.0.1.0), entonces tendrás que eliminar la antigua referencia dll y agregar la nueva referencia. Esto se debe a que el proyecto busca específicamente 1.0.0.0 cuando tiene una nueva versión 1.0.1.0.

La alternativa a esto es establecer SpecificVersion en falso, lo que le indica al proyecto que busque la última DLL disponible y la use. El problema con esto es que ahora se requiere que el proyecto "cace" en varios lugares para el archivo DLL al que ha hecho referencia, lo que puede aumentar su tiempo de compilación. Hará esto aunque sepa la ruta del dll al que ha hecho referencia. No estoy seguro de si esto es un error o si esto se hace por diseño. Es posible que esté comprobando si hay dlls más nuevos además del que ha mencionado (quizás en el GAC o en otro lugar).

Aquí hay un article que describe este problema con más detalle.

+0

¿Deberíamos considerar los ensambles provenientes de la otra compañía con un número de versión de acoplamiento flojo? Quiero decir, ¿es una buena práctica establecer la versión específica en falso y simplemente soltar el nuevo dll (con un nuevo número de versión) cuando se produjo la integración semanal? – sptremblay

+0

Por cierto, solo lea su referencia en el artículo y me dio mucha información. Gracias. – sptremblay

Cuestiones relacionadas