Assemblée génération a échoué - assembly Référencé ne pas avoir un nom fort. Pourquoi n'est-il pas d'autres solutions?
C'est un problème classique, qui a de nombreux solutions décrit. Cependant, aucun d'entre eux semblent fonctionner pour moi.
Je suis en utilisant le Report.NET de la bibliothèque dans une solution SharePoint. L'ajout de la Reports.dll comme une référence et la compilation des résultats dans le message d'erreur "de l'Assemblée de la génération de l'échec assembly Référencé "Rapports" ne pas avoir un nom fort." Mon projet, cependant, a une clé.snk lié dans les propriétés du projet. J'ai donc essayer de démonter, de le signer et de le remonter de la dll avec ce fichier de clé, comme il est décrit ailleurs:
C:\Users\Administrator\Documents\Visual Studio 2010\Projects\MyProj
\dll>ildasm Reports.dll /out:Reports.il
C:\Users\Administrator\Documents\Visual Studio 2010\Projects\MyProj
\dll>ilasm Reports.il /dll /resource=Reports.res /key=..\key.snk
<output removed for brevity>
Class 95
Class 96
Method Implementations (total): 1
Resolving local member refs: 0 -> 0 defs, 0 refs, 0 unresolved
Writing PE file
Signing file with strong name
Operation completed successfully
Je me retrouve avec un nouveau Reports.dll horodaté à maintenant. L'ajout de cette comme une référence à mon projet et de construction, cependant, donne le même message d'erreur qu'avant. Les propriétés de la "Rapports" de référence affiche "Nom Fort: False".
Ne pas être découragé par un peu de mal, j'ai essayer de re-signer l'assembly à l'aide de la fort de nommage de l'utilitaire:
C:\Users\Administrator\Documents\Visual Studio 2010\Projects\MyProj
\dll>sn -R Reports.dll ..\key.snk
Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Assembly 'Reports.dll' successfully re-signed
Il pourrait être intéressant de noter que l'exécution de la SN utilitaire échoue avec le message d'erreur "Reports.dll ne représente pas un nommé fortement assemblée" lors de l'exécution avant le démonter/signe/remonter processus.
Toutefois, lorsqu'il est exécuté après le démontage/signature/remontage, je reçois toujours le message d'erreur d'origine lors de la reprise de l'ajouter à Visual Studio.
OriginalL'auteur Geir Smestad | 2012-02-22
Vous devez vous connecter pour publier un commentaire.
Je viens de résoudre ce problème dans vs 2010 en utilisant ceci:
OriginalL'auteur Oleg Guchashvili
Je dirais que si, après que vous avez sans ambiguïté signé le Reports.dll correctement à partir de la ligne de commande, VS dit encore que cette dll est pas signé, il doit ensuite renvoyer le mauvais fichier.
Si vous voulez être vraiment paranoïaque et vérifiez les noms forts après la signature, de la charge Reports.dll en ildasm (vous devez double-cliquez sur le manifeste nœud dans l'arbre et faites défiler vers le bas pour trouver le
.publickey
section). Ou pour plus de facilité il suffit de l'ouvrir dans ILSpy.Après la signature reports.dll; ouvrez votre référencement du projet proj fichier en tant que document XML (si vous avez le VS PowerCommands vous pouvez faire un clic droit et cliquez sur "Modifier le Fichier de Projet"; sinon, vous pouvez décharger le projet, puis l'ouvrir dans VS à l'aide de la commande 'Ouvrir Avec' partir de la boîte de dialogue Ouvrir Fichier) et vérifiez que la référence à la dll est en effet le chemin d'accès correct. Si ce n'est pas, corrigez-la et recharge le projet.
Les centres d'intérêt lorsque vous sélectionnez le nœud racine de l'assemblée en ILSpy, le volet de droite, devrait montrer dans les deux premiers commentaires le nom du fichier et le nom de l'assembly sur la deuxième ligne. Sur cette deuxième ligne, le nom de l'assembly fin avec
, PublicKeyToken=[some_hex_string]
?Aussi est-ce la 'Report.Net" bibliothèque ici: sourceforge.net/projects/report Si oui pouvez-vous ne pas ouvrir le projet et la reconstruction en VS avec votre fichier en tant que partie du processus de création?
Le nom de l'assembly est "Rapports", Version=0.8.1774.35468, Culture=neutral, PublicKeyToken=null". Donc je suppose que souligne également que l'assemblée n'était pas signé. Vous avez trouvé la bonne bibliothèque, et j'ai pu développer de la manière que vous décrivez. Sera probablement jusqu'à la fin si je n'ai pas le découvrir bientôt, mais j'ai toujours eu du mal avec la signature et je voulais voir si je pouvais le comprendre une fois pour toutes. Merci.
Je remarque que Reports.NET est ciblée .NET version 2.0. Mon projet est ciblé .NET 3.5. Est ce que cela a une quelconque importance?
OriginalL'auteur Andras Zoltan