Question

Dernièrement, je travaille sur quelques petites applications .NET qui partagent un code commun. Le code a des interfaces introduites à abstraire E / S appelle pour les tests unitaires.

Je voulais que les applications soient autonomes sans EXEs dépendances externes. Cela semble être le cas d'utilisation parfaite pour les bibliothèques statiques. Venez à penser tiers fournisseurs de contrôle du parti pourraient bénéficier de ce modèle aussi.

Y a-t-il des vacheries cachés avec des bibliothèques statiques que je l'ai manqué?

Y at-il des raisons pour lesquelles les concepteurs de C # les ai laissés?

Edit: Je suis au courant de ILMerge mais il ne propose pas le même confort que les bibliothèques statiques

.
Était-ce utile?

La solution

.NET ne supporte en fait l'équivalent moral d'une statique bibliothèque. Il est appelé netmodule (extension de fichier est généralement .netmodule). En savoir plus à ce sujet dans ce post . Attention qu'il ne soit pas bien pris en charge par Visual Studio construire la chaîne d'outils. Je pense que sont un problème aussi bien. ILMerge est le meilleur outil pour obtenir ce fait.

Autres conseils

Ce n'est pas directement lié à C #, mais à l'ensemble parapluie .NET. Bien sûr, il est possible de fusionner des ensembles en utilisant ILMerge , mais hélas! il est encore un projet de recherche, mais au moins ses permis de licence utiliser pour les entreprises commerciales. A part cela, le moteur d'exécution (CLR) ne peut pas être fusionné en un seul exécutable, la plate-forme cible doit encore .NET à installer.

Edit:

Je tapais ceci avant votre poste avec édité ILMerge. Je peux me tromper, mais il n'y a pas d'avantages supplémentaires d'éviter la mise en relation dynamique de style .NET lors de l'exécution. Il n'y a rien de mal à mettre les ensembles de satellites en même temps que l'exécutable. Microsoft ne recommande pas de les mettre dans le GAC.

Utilisation libs statiques présente l'inconvénient qu'il n'est pas patchable par le fournisseur d'exécution (MS).

Par exemple, si vous utilisez libs MFC statique et un problème Securify ou tout autre bug se trouve dans les libs MFC statiques, MS ne peut pas patcher (le code est déjà dans votre exécutable). L'utilisation permet Dlls Partagée un correctif facile au niveau OS sans vous soucier de cela.

Bien sûr, avoir partagé libs a un petit inconvénient:. Une dépendance est prise et ils doivent être installés sur le système

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top