Подтвердить что ты не робот

Сборка сборки не выполнена. Ссылка на сборку не имеет строгого имени. Почему другие решения не работают?

Это классическая проблема, в которой многочисленные решения описаны. Однако никто из них, похоже, не работает для меня.

Я использую библиотеку Report.NET в решении SharePoint. Добавление Report.dll в качестве ссылки и компиляция результатов в сообщении об ошибке "Сборка сборки не удалась. Ссылочная сборка" Отчеты "не имеет сильного имени". Однако у моего проекта есть ключ .snk, связанный в свойствах проекта. Поэтому я пытаюсь разобрать, подписать и собрать DLL с этим ключевым файлом, как описано в другом месте:

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

В итоге я получаю новый timestamped с Date.dll. Однако добавление этого в качестве ссылки на мой проект и здание дает такое же сообщение об ошибке, что и раньше. В свойствах ссылки "Отчеты" отображается "Сильное имя: False".

Чтобы не обескураживать некоторые проблемы, я пытаюсь переписать сборку с помощью сильной утилиты именования:

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

Возможно, стоит отметить, что при запуске утилиты SN с сообщением об ошибке "Reports.dll не представляет собой сильно именованную сборку" при запуске до процесса дизассемблирования/подписания/сборки.

Однако при запуске после разборки/подписи/повторной сборки я до сих пор получаю исходное сообщение об ошибке при повторном добавлении его в Visual Studio.

4b9b3361

Ответ 1

Я просто решил эту проблему в vs 2010, используя это:

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

Ответ 2

Я бы предположил, что если после того, как вы однозначно правильно подписали Reports.dll из командной строки, VS все еще говорит, что эта dll не имеет знака; то он должен ссылаться на неправильный файл.

Если вы хотите быть действительно параноидальным и дважды проверить сильное имя после подписания, загрузите Reports.dll в ildasm (вам нужно дважды щелкнуть манифест node в дереве и прокрутите вниз, чтобы найти .publickey). Или для простоты просто откройте его в ILSpy.

После подписания reports.dll; откройте файл proj проекта реферирования как XML-документ (если у вас есть VS PowerCommands, вы можете щелкнуть правой кнопкой мыши и "Изменить файл проекта", иначе вы можете выгрузить проект, а затем открыть его в VS, используя команду "Открыть с" из Откройте диалоговое окно "Файл" ) и убедитесь, что ссылка на DLL - действительно правильный путь. Если это не так, исправьте и перезагрузите проект.