2008-11-19 8 views
0

J'essaie d'ajouter un fichier de stratégie d'éditeur au gac conformément à ce thread mais je rencontre des problèmes lorsque j'essaie d'ajouter le fichier sur mon serveur de test.Erreur lors de l'ajout d'un fichier de stratégie à GAC

je reçois « Un module spécifié dans le manifeste de l'ensemble « policy.3.0.assemblyname.dll » n'a pas pu être trouvé »

Mon fichier de stratégie ressemble à ceci:

<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="*assemblyname*" 
          publicKeyToken="7a19eec6f55e2f84" 
          culture="neutral" /> 
     <bindingRedirect oldVersion="3.0.0.0" 
         newVersion="3.0.0.1"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

S'il vous plaît aider!

Merci

Ben


J'ai recréé le problème à partir de zéro avec un nouvel ensemble qui n'a pas de dépendances (à l'exception des valeurs par défaut) lui-même - tout fonctionne bien sur ma machine de développement local (et redirige aussi bien) mais donne la même erreur en ajoutant le fichier de politique au GAC sur le serveur!

<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="TestAsm" 
          publicKeyToken="5f55456fdcc9b528" 
          culture="neutral" /> 
     <bindingRedirect oldVersion="3.0.0.0" 
         newVersion="3.0.0.1"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

liée à la façon dont

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\al.exe /link:PublisherPolicy.xml /out:policy.3.0.TestAsm.dll /keyfile:..\..\key.snk /version:3.0.0.0 
pause 

suivant S'il vous plaît aider!

Répondre

2

Wow - d'accord.

je aurais dû faire plus attention à exactement ce que cela signifiait

(MSDN) How to: Create a Publisher Policy

Remarque importante: L'assemblée politique de l'éditeur ne peut être ajouté au cache d'assembly global à moins que le fichier de stratégie d'éditeur d'origine est situé dans le même répertoire que l'assembly.

Cette exigence est, franchement, si bizarre qu'elle ne s'est pas inscrite. Le fichier de stratégie d'origine, qui a été compilé dans l'assembly que j'essaie d'ajouter au gac, doit se trouver dans le même dossier que l'assembly de règles lorsque vous ajoutez l'assembly de règles.

1

Ok ... Je veux juste vérifier quelques notions de base ....

Vous avez certainement eu les deux versions de l'assemblage dépendant installé à GAC?

Et avez-vous vérifié que les numéros de version dans l'attribut [assembly: AssemblyVersion()] sont corrects?

Et vous avez utilisé [assembly: AssemblyVersion()] et PAS [montage: AssemblyFileVersion ("1.0.0.1")].

Mise à jour: Mon erreur, vous avez seulement besoin de la dernière version de l'assemblage dans le GAC. J'ai juste essayé ça ici et ça marche. Mes autres pensées sont de vérifier que les jetons de clé publique sont les mêmes et que vous n'avez pas mal orthographié le nom de l'assembly.

Lorsque vous générez le fichier de stratégie, veillez à utiliser le commutateur/version dans l'éditeur d'assembly pour définir explicitement le numéro de version sur 3.0.0.0 ET ne spécifiez pas le commutateur/platform. par exemple.

al.exe /link:assembly.config /out:policy.3.0.assembly.dll 
     /keyfile:mykey.snk /version:3.0.0.0 
+1

merci de répondre Non, je n'ai que la version cible de l'assembly dans le GAC (3.0.0.1) - mais cela fonctionne sur ma machine dev (bien, il installe au GAC, pas sûr si elle redirige encore ok). Dois-je avoir la version non utilisée dans le GAC si je veux faire cette redirection? La version d'assemblage et la version du fichier d'assemblage sont toutes les deux réglées sur 3.0.0.1 – Ben

+0

En fait, il semble que vous ayez seulement besoin de la dernière version de l'assemblage dans le GAC, alors excusez-moi pour ce harcèlement. – Kev

+0

J'ai ajouté quelques commentaires à ma réponse. – Kev

0

Pour ajouter des ensembles de règles au GAC à l'aide de Wise, vous faites la même chose que pour l'ajout de l'ensemble pour lequel la règle s'applique. Vous ajoutez donc l'assembly de politique au "Global Assembly Cache" dans Wise, et aussi longtemps que vous avez le fichier de politique (.config) au même endroit sur la machine, Wise l'ajoutera automatiquement au GAC.

Questions connexes