8
votes

Quels sont les coûts des références d'assemblée inutilisées?

Je me demandais quels sont les différents coûts des assemblages de référencement dans une solution .NET. Je suis intéressé par les coûts techniques et organisationnels.

Quelques exemples:

  • L'assemblage inutilisé contient des octets supplémentaires à expédier (téléchargements plus longs, espace gaspillé)
  • L'assemblage inutilisé peut contenir un trou de sécurité exploitable
  • L'Assemblée inutilisée peut entraîner des coûts de démarrage supplémentaires
  • L'Assemblée inutilisée pourrait entraîner des coûts d'examen supplémentaires (comme cette question)
  • L'Assemblée inutilisée pourrait confondre un nouveau développeur

4 commentaires

Même si l'Assemblée inutilisée était expédiée, je ne vois pas comment cela pourrait poser un risque de sécurité. Comme il est inutilisé, aucun de son code n'est jamais exécuté (pas même des constructeurs statiques).


@Heinzi: Je suis totalement avec Marijn ici. Supprimer la référence et ne pas déployer l'assemblage est un petit snip qui enregistre une tonne de questions stupides par la suite.


Je n'ai pas dit que je suis en désaccord avec Marijn - au contraire: il y a beaucoup de bonnes raisons de ne pas référencer et de ne pas déployer des assemblées inutiles. Je ne comprends tout simplement pas le point sur la sécurité, car je ne peux penser à aucun vecteur d'attaque qui exploiterait un trou de sécurité dans une assemblée inutilisée.


@Heinzi: Je vous réfère à xkcd.com/883


3 Réponses :


11
votes

Si vous faites référence à un assemblage dans un projet, mais n'utilisez aucun type dans cet ensemble, l'assemblage inutilisé ne fera pas partie de votre produit final. La référence est supprimée au moment de la compilation.

La seule "frais générale" de référencer les assemblées inutilisées est au cours du développement où la référencement de nombreux assemblées inutilisées peut confondre le développeur sur les dépendances du projet. Chaque nouvel assemblage de votre projet créera également des frais généraux pour IntelliSense et le compilateur, mais dans la plupart des cas, vous remarquerez.

Restomer a une fonction à analyser si un assemblage référencé n'est pas utilisé.


2 commentaires

Merci, avez-vous une référence indiquant que cela est retiré au moment de la compilation?


@ROBERTJEPPESEN: Je ne sais pas si je lisais In Essential .Net, volume I par Don Box Il y a de nombreuses années, mais vous pouvez simplement le tester vous-même en compilant un projet avec des références "trop ​​nombreuses" et regardez l'assemblage résultant.



0
votes

Si vous n'utilisez rien de l'assembly, ils sont dépouillés lors de la compilation de sorte que le coût n'est rien.


0 commentaires

1
votes

À mon avis, les frais généraux organisationnels pour moi (et mes collègues) pour même penser sur des références inutilisées (pourquoi avons-nous besoin de XML ici?) Est-ce que suffisamment de motivation pour les supprimer. Par conséquent, je n'ai jamais examiné l'impact sur le déploiement ou la performance.


0 commentaires