2012-02-22 15 views
12

Jest to klasyczny problem, który ma numerous rozwiązania described. Jednak żaden z nich nie działa dla mnie.Generowanie zestawów nie powiodło się - zestaw referencyjny nie ma silnej nazwy. Dlaczego inne rozwiązania nie działają?

Używam biblioteki Report.NET w rozwiązaniu SharePoint. Dodanie pliku Reports.dll w celach informacyjnych i kompilacja powoduje wyświetlenie komunikatu o błędzie "Nie można wygenerować zestawu - odwołanie do zestawu" Raporty "nie ma silnej nazwy." Mój projekt ma jednak klucz.snk powiązany z właściwościami projektu. Więc staram się rozbierać, podpisać i zmontować z tego pliku dll klucz, jak opisano gdzie indziej:

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 

I skończyć z nowym Reports.dll o czasie, do teraz. Dodanie tego jako odniesienia do mojego projektu i budynku daje jednak ten sam komunikat o błędzie, co poprzednio. Właściwości odnośnika "Raporty" wyświetlają "Strong Name: False".

Nie zniechęcajcie się trochę kłopotów, próbuję ponownie podpisać montaż przy użyciu silnego narzędzia nazewnictwa:

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 

to może być warto zauważyć, że uruchomienie narzędzia SN kończy się niepowodzeniem z komunikatem o błędzie "Reports.dll nie reprezentuje silnie nazwanego zestawu" przed uruchomieniem procesu demontażu/podpisu/ponownego złożenia.

Jednak po uruchomieniu po demontażu/podpisaniu/ponownym montażu nadal otrzymuję oryginalny komunikat o błędzie podczas ponownego dodawania go do programu Visual Studio.

+0

możliwe duplikat [generacja Assembly nie powiodło się - odwołuje zestawu 'Interop.Office' nie ma silnej nazwy] (http: // stackoverflow .pl/questions/6845537/assembly-generation-failed-referenced-assembly-interop-office-does-not-have) – JabberwockyDecompiler

Odpowiedz

20

po prostu rozwiązać ten problem w VS 2010 przy użyciu to:

Project Properties -> Signing -> uncheck Sign the assembly checkbox 
+6

Po prostu uwielbiam przepełnienie stosu. 99% moich problemów jest zawsze rozwiązywanych za pomocą przepełnienia stosu. Wszyscy kołyszą !! – Karishma

3

Sugerowałbym, że jeśli po jednoznacznym podpisaniu pliku Reports.dll z linii poleceń, VS nadal mówi, że dll jest niepodpisana; to musi odnosić się do niewłaściwego pliku.

Jeśli chcesz być naprawdę paranoikiem i dwukrotnie sprawdzić silne nazwanie po podpisaniu, załaduj Reports.dll do ildazmu (musisz kliknąć dwukrotnie węzeł manifestu w drzewie i przewinąć w dół, aby znaleźć sekcję .publickey) . Lub dla ułatwienia wystarczy otworzyć go w ILSpy.

Po podpisaniu report.dll; otwórz plik proj projektu referencyjnego jako dokument XML (jeśli masz VS PowerCommands możesz kliknąć prawym przyciskiem myszy i "Edycja pliku projektu", w przeciwnym razie możesz zwolnić projekt, a następnie otworzyć go w VS za pomocą polecenia "Otwórz za pomocą" Otwórz okno dialogowe pliku) i sprawdź, czy odniesienie do biblioteki dll jest rzeczywiście poprawną ścieżką. Jeśli nie, popraw go i ponownie załaduj projekt.

+0

Cześć, dziękuję za twoje wejście. Po uruchomieniu powyższych poleceń podpisywania, ILSpy (dobre narzędzie, przy okazji) zgłasza [assembly: AssemblyKeyFile ("")] i [assembly: AssemblyKeyName ("")] dla Reports.dll. Zgaduję, że oznacza to, że plik nie jest faktycznie podpisany? Znaczniki czasu pliku wciąż odpowiadają jednak rzekomemu podpisowi. –

+0

Nienaruszone - po wybraniu głównego węzła zespołu w ILSpy, prawe okienko powinno pokazywać w pierwszych dwóch komentarzach nazwę pliku, a następnie pełną nazwę zespołu w drugim wierszu. W tym drugim wierszu nazwa zespołu kończy się na ', PublicKeyToken = [some_hex_string]'? –

+1

Jest to także biblioteka "Report.Net" tutaj: http: // sourceforge.net/projects/report/Jeśli tak, to nie możesz otworzyć projektu i odbudować go w VS razem ze swoim plikiem kluczowym w ramach procesu budowania? –

Powiązane problemy