Dll à la fois dans le bac et le gac, lequel est utilisé?

Nous avons une application Web qui est déployée sur de nombreux sites Web avec uniquement des modifications frontales, la partie backend partagée a sa DLL dans le GAC, il suffit de mettre à jour cette seule DLL et tous les sites reçoivent la mise à jour.

Existe-t-il un moyen de remplacer le GAC par une DLL dans le dossier / bin pour tester les nouvelles fonctionnalités avant leur publication?

S’il possède le même numéro de version que la DLL référencée, le GAC est utilisé.

Si vous incrémentez le numéro de version, reconstruisez le site Web en référence au nouveau numéro de version, placez la nouvelle version dans le répertoire / bin, puis cette DLL sera utilisée.

Si vous ne voulez pas changer le numéro de version, vous n’avez pratiquement plus de chance.

Lorsque .NET charge des assemblys nommés forts, il essaie d’abord de décider quel numéro de version utiliser. Il le fait via la référence d’abord, puis il recherche les stratégies d’éditeur , puis il recherche les redirections de liaison dans le fichier de configuration.

Après cela, il recherche l’assembly dans le GAC, puis dans n’importe quelle base de code spécifiée , puis il sonde différents dossiers de système de fichiers pour la DLL. Si à l’une de ces étapes, il trouve l’assembly de la version correcte, il s’arrête.

Si vous ne modifiez pas le numéro de version de votre assembly nommé fort, .NET trouvera l’original dans le GAC et cessera de chercher. Notez que, comme il s’arrête lorsqu’il en trouve un, et que la recherche dans le GAC est la première, spécifier une base de code pour votre assembly ne fonctionnera pas à moins que vous ne spécifiiez également un nouveau numéro de version.

J’ai pu remplacer le GAC par l’assemblage dans le dossier \ bin en utilisant l’élément .

En spécifiant dans mon fichier web.config, je peux indiquer à mon application d’utiliser cette version plutôt que la version spécifiée dans le GAC.

Vous pouvez également consulter l’élément pour spécifier les emplacements d’assemblage?

Je pense que je pourrais dire la même pensée qu’Adam Sills, mais je l’ai reformulée pour comprendre. Grâce à mes propres tests, il semble que ce soit ce qui se passe:

  • Si votre application est compilée avec la version 1.0.0.0 et 1.0.0.1 est dans le GAC, vous pouvez omettre le fichier .dll de votre / bin.
  • Si votre application est compilée avec la version 1.0.0.1 et 1.0.0.0 est dans le GAC, vous devez alors placer le fichier .dll dans votre / bin pour ignorer le GAC. Une erreur se produira si la version de GAC est antérieure à la version requirejse de votre application, sauf si vous incluez la version la plus récente dans votre / bin.

J’espère que c’est correct…

Vous pouvez afficher les informations de liaison dans le fichier journal à l’aide de l’afficheur de journal de liaison d’assemblage (Fuslogvw.exe), qui est inclus dans le kit de développement logiciel (SDK) de Windows.

s