Quels sont les avantages de l'utilisation d'assemblys nommés forts?
Quelles sont les choses qui ne peuvent pas être faites avec un assemblage normal?
Permettez-moi d'énumérer d'abord les avantages d'un nom fort de votre assemblage:
Le nom fort de votre assembly vous permet d'inclure votre assembly dans le Global Assembly Cache (GAC). Ainsi, il vous permet de le partager entre plusieurs applications.
Une dénomination forte garantit un nom unique pour cet assemblage. Personne d'autre ne peut donc utiliser le même nom d'assembly.
Le nom fort protège la lignée de version d'un assembly. Un nom fort peut garantir que personne ne pourra produire une version ultérieure de votre assembly. Les utilisateurs de l'application sont assurés qu'une version de l'assembly qu'ils chargent proviennent du même éditeur qui a créé la version avec laquelle l'application a été créée.
Pour en savoir plus sur la dénomination forte de Microsoft, consultez les assemblys à nom fort ( MSDN ).
Étant donné que toutes les discussions qui ont commencé avec la montée en puissance de Nuget ont suggéré de se débarrasser complètement des assemblages nommés forts, mon entreprise a essayé cela et a rencontré un changement de comportement important en ce qui concerne les paramètres d'application:
Si vous utilisez l'application automatique ou les paramètres d'application à portée utilisateur fournis par VisualStudio (héritant de System.Configuration.ApplicationSettingsBase), un EXE nommé fort créera exactement 1 répertoire dans% LOCALAPPDATA% nommé par exemple "YourApplication.exe_StrongName_kjsdfzsuzdfiuzgpois EXEdiufzsdouif", peu importe où se trouve le fichier. situé.
Mais sans le nom fort, l'emplacement (= chemin) de l'EXE sera utilisé pour créer une valeur de hachage qui diffère déjà entre DEBUG et RELEASE build, créant de nombreux répertoires à l'intérieur de% LOCALAPPDATA% nommés comme "YourApplication.exe_Url_dfg8778d6fs7g6d7f8g69sdf". Cela le rend inutilisable pour les déploiements ClickOnce où le répertoire d'installation change à chaque mise à jour.
la source
Je voudrais ajouter que sans un nom fort, vous ne pouvez pas utiliser de redirections de liaison dans les fichiers de configuration.
Cela ne fonctionnera pas:
Vous devez avoir un jeton de clé publique
la source
Juste un exemple: je voudrais donner une réponse en mettant davantage l'accent sur la sécurité . Dans le cas où nous créons des assemblys avec un code source que nous ne souhaitons pas réutiliser pour un tiers mais que nous voulons qu'il soit testable, nous pouvons fortement signer un assembly et rendre les composants internes visibles uniquement pour ces assemblys avec le même signature.
la source