2010-11-12 9 views
8

Me preguntaba cuáles son los diversos costos de hacer referencia a los ensamblados en una solución .NET. Estoy interesado en los costos técnicos y organizacionales.¿Cuál es el costo de las referencias de ensamblaje no utilizadas?

Algunos ejemplos:

  • La Asamblea no utilizada contiene bytes adicionales para enviar (descargas más largas, el espacio desperdiciado)
  • La Asamblea no utilizado podría contener un agujero de seguridad explotable
  • La Asamblea no utilizado podría incurrir arranque adicionales costes
  • El conjunto no utilizado puede incurrir en costes de revisión adicionales (como esta pregunta)
  • El conjunto no utilizado puede confundir a un nuevo desarrollador
+0

Incluso si se envió el ensamblaje no utilizado, no veo cómo podría representar un riesgo de seguridad. Como no se usa, ninguno de sus códigos se ejecuta (ni siquiera constructores estáticos). – Heinzi

+0

@Heinzi: estoy totalmente con Marijn aquí. Quitar la referencia y no desplegar el conjunto es un pequeño recorte que ahorra una tonelada de preguntas estúpidas después. –

+0

No he dicho que estoy en desacuerdo con Marijn, al contrario: hay muchas buenas razones para no hacer referencia y no desplegar ensamblajes innecesarios. Simplemente no entiendo el punto acerca de la seguridad, ya que no puedo pensar en ningún vector de ataque que pueda explotar un agujero de seguridad en un conjunto no utilizado. – Heinzi

Respuesta

11

Si hace referencia a un conjunto en un proyecto pero en realidad no usa ningún tipo en ese conjunto, el ensamblaje no utilizado no será parte de su producto final. La referencia se elimina en tiempo de compilación.

La única "sobrecarga" de hacer referencia a los ensamblajes no utilizados es durante el desarrollo donde hacer referencia a muchos ensamblajes no utilizados puede confundir al desarrollador sobre las dependencias que tiene el proyecto. Cada nuevo ensamblaje en su proyecto también creará una sobrecarga para IntelliSense y el compilador, pero en la mayoría de los casos no lo notará.

ReSharper tiene una función para analizar si un ensamblaje al que se hace referencia no se utiliza.

+0

Gracias. ¿Tiene alguna referencia que indique que esto se elimina en el momento de la compilación? –

+1

@RobertJeppesen: No estoy seguro si leo en Essential .NET, Volumen I de Don Box hace muchos años, pero puede probarlo usted mismo compilando un proyecto con "demasiadas" referencias y observando el ensamblaje resultante. –

0

Si no usa nada del ensamblaje, estos se eliminan cuando se compilan, por lo que el costo no es nada.

1

En mi opinión, la sobrecarga organizacional para mí (y mis compañeros de trabajo) incluso piensa sobre referencias no utilizadas (¿por qué necesitamos XML aquí?) Es suficiente motivación para eliminarlas. En consecuencia, nunca he considerado el impacto en la implementación o el rendimiento.

Cuestiones relacionadas