échec de la validation de nom fort sur Import-Module
-
04-10-2019 - |
Question
Je ne parviens pas à importer un assemblage, soi-disant parce que la validation forte de nom échoue, même si cela se produit même quand j'enregistrer l'assemblée de ne pas être vérifiée. Puis place à quelqu'un ce que je fais mal ici?
Voici une transcription. Pour référence, les commutateurs à sn.exe sont:
- -v:. Vérifiez la signature
-
-Vr. Registre assemblage pour skipping vérification
PS C:.. \ Temp> \ sn.exe -v \ my.dll
Microsoft (R) .NET Framework Strong Name Utility version 3.5.30729.1 Copyright (c) Microsoft Corporation. Tous droits réservés.
Assemblée. \ My.dll 'est valide
PS C:. \ Temp \ Cmdlets> Import-Module \ my.dll Import-Module: Impossible de charger le fichier ou l'assembly « mon, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' ou un de ses dépendances. validation de nom fort a échoué. (Exception de HRESULT: 0x8013141A) A la ligne 1 de carbonisation: 14
- Import-Module <<<<. \ Microsoft.Rtc.Management.Core.dll
- CategoryInfo: NotSpecified: (:) [Import-Module], FileLoadExcep tion
- FullyQualifiedErrorId: System.IO.FileLoadException, Microsoft.PowerShell .Commands.ImportModuleCommand
PS C:. \ Temp \ Cmdlets> \ sn.exe -Vr *
Microsoft (R) .NET Framework Strong Name Utility version 3.5.30729.1 Copyright (c) Microsoft Corporation. Tous droits réservés.
entrée vérification ajouté pour l'assemblage ' '
PS C:. \ Temp \ Cmdlets> Import-Module \ my.dll Import-Module: Impossible de charger le fichier ou l'assembly « mon, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' ou un de ses dépendances. validation de nom fort a échoué. (Exception de HRESULT: 0x8013141A) A la ligne 1 de carbonisation: 14
- Import-Module <<<<. \ Microsoft.Rtc.Management.Core.dll
- CategoryInfo: NotSpecified: (:) [Import-Module], FileLoadExcep tion
- FullyQualifiedErrorId: System.IO.FileLoadException, Microsoft.PowerShell .Commands.ImportModuleCommand
- Import-Module <<<<. \ Microsoft.Rtc.Management.Core.dll
Je dois mentionner que je l'ai vérifié par réflecteur que tous les ensembles dépendants nécessaires sont présents dans le même répertoire.
La solution
Votre ensemble est probablement retard signé ou clé de test signé, et il semble que seule PowerShell permet des assemblages entièrement signé à charger (à-dire qu'elle ne tient pas compte du saut paramètre de vérification). Cela expliquerait pourquoi sn.exe dit l'assemblée a une signature de nom fort valable quand il ne techniquement pas. (Vous pouvez savoir si l'Assemblée a fait une signature valide, même si elle est enregistrée pour sauter la vérification, en exécutant sn -vf
au lieu de sn -v
).
Je pense que la principale source de votre confusion découle d'une hypothèse erronée sur la façon dont fonctionne le saut de vérification. Enregistrement d'un ensemble pour la vérification est-skipping pas une garantie qui ne sera jamais vérifiée forte signature du nom de l'assemblée. La vérification est spécifiquement skipping destiné à permettre retard signé et la clé essai signé ensembles à fonctionner de manière transparente dans des situations comme celles-ci, mais rien ne s'arrête quelqu'un (comme PowerShell) de surcharger et de forcer la vérification de toute façon.