68 votes

Dll à la fois le bin et le gac, à laquelle on s'habitue?

Nous avons une application web qui est déployé sur de nombreux sites web avec seulement frontend changements, le backend de la partie a de la DLL dans le GAC, donc nous n'avons qu'à mettre à jour qu'une dll et tous les sites obtenir la mise à jour.

Est-il un moyen de remplacer le GAC avec une DLL dans le dossier /bin pour tester de nouvelles fonctionnalités avant qu'ils sortent?

80voto

Adam Sills Points 8749

Si il a le même numéro de version que référencé dans la DLL, le GAC s'habitue.

Si vous incrémenter le numéro de version, de reconstruire le site web de référencement, le nouveau numéro de version, mettre la nouvelle version dans le répertoire /bin, alors que la DLL sera utilisé.

Si vous ne souhaitez pas modifier le numéro de version, vous êtes un peu hors de la chance.

Lors de l' .Charges NETTES fort nommé assemblées, d'abord, il essaie de décider de ce numéro de la version à utiliser. Il le fait via la référence première, alors qu'il recherche un éditeur politiques, il recherche alors la liaison redirige dans le fichier de configuration.

Après avoir fait cela, il semble pour l'assembly dans le GAC, puis dans toute la base de code spécifié, puis il examine les divers dossiers du système de fichiers de la DLL. Si l'une de ces étapes, il trouve la bonne version de l'assemblée, il s'arrête.

Si vous ne modifiez pas le numéro de version de votre fort nommé assemblée .NET trouverez l'original dans le GAC et arrêter de regarder. Notez que parce qu'il s'arrête quand il en trouve un, et parce que la recherche dans le GAC est d'abord, la spécification d'une base de code pour votre assemblée, ne servira à rien sauf si vous spécifiez également un nouveau numéro de version.

11voto

IsolatedStorage Points 428

J'ai été en mesure de remplacer le GAC avec l'assemblée dans le dossier \bin à l'aide de l' <codebase>Élément.

En spécifiant <codebase version="1.2.3.4" href="http://stackoverflow.com/bin/MyAssembly.dll" /> dans mon web.fichier de config je peux dire à ma demande pour utiliser cette version plutôt que la version spécifiée dans le GAC.

Vous pouvez également prendre un coup d'oeil à l' <probing>Élément pour la spécification de l'assemblée endroits?

2voto

J.Hendrix Points 799

Je pense que je pourrais dire la même chose de penser comme Adam bas de caisse, mais reformulé pour ma compréhension. Grâce à mes propres tests, il semble que ce soit ce qui se passe:

  • Si votre application est compilé avec la version 1.0.0.0 et 1.0.0.1 est dans le cas, vous pouvez omettre l' .dll à partir de votre /bin.
  • Si votre application est compilé avec la version 1.0.0.1 et 1.0.0.0 est dans le cas, vous DEVEZ alors placer le .dll dans votre /bin ignorer le GAC. Une erreur se produit si le GAC version est plus ancienne que la version de votre application, sauf si vous incluez la version la plus récente de votre /bin.

J'espère que c'est correct...

0voto

Muse VSExtensions Points 1171

Vous pouvez afficher les informations de liaison dans le fichier journal à l'aide de l'Assemblée de Liaison de la Visionneuse de Journaux (Fuslogvw.exe), qui est inclus dans Windows Kit de Développement Logiciel (SDK).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X