He leído que eliminar las referencias no utilizadas makes no difference al compilador, ya que ignora los ensamblajes que no están siendo referenciados en el código mismo.¿Cuál es el propósito de "eliminar referencias no utilizadas"
Pero me resulta difícil de creer porque entonces, ¿cuál es el verdadero propósito de Removing unused references? No tiene ningún efecto notable en el tamaño del ensamblaje generado o de otro modo. ¿O es este comportamiento inteligente limitado al compilador de C# (csc.exe) y no inherente a vbc.exe?
Si esta funcionalidad es tan inútil, ¿por qué la ofrece ReSharper como característica? ¿Por qué se proporciona en el cuadro de diálogo Configuración del proyecto de Visual Studio?
La única actividad que puedo pensar en dónde esto podría ser útil es durante el Despliegue. Las referencias (usadas o no) seguirán siendo copiadas por el instalador. Pero para los ensamblados que residen en el GAC (por ejemplo, ensambles BCL), esto tampoco sería un problema.
¿Cómo va a cargar el CLR un módulo en tiempo de ejecución cuya referencia fue eliminada por una optimización del compilador? ¿Que me estoy perdiendo aqui? – Dan
@Dan - Tampoco entiendo por qué esta respuesta recibió tantos votos hacia arriba, por lo que he leído en otras publicaciones, el compilador no incluirá la referencia de ensamblado en el resultado final si no se utiliza. Los conjuntos referenciados solo serán cargados por el JIT en la primera llamada a un método de ellos. La ventana de módulos cargados que esta respuesta brinda como prueba podría mostrar todas las referencias porque está en modo de depuración. – BornToCode
@BornToCode Además, si 'es [es] difícil para el CLR determinar si realmente se usa una dependencia', ¿cómo funciona" Quitar referencias no utilizadas "? Determinar si se usa o no una referencia es simple: si ningún código hace referencia a algo en el espacio de nombres de ese ensamblaje, entonces no se utiliza. – Dan