Сбой генерации сборки - у ссылочной сборки "XXXX" нет строгого имени
В моем решении есть один проект библиотеки классов C# (проект). Я хотел бы добавить сборку со строгим именем в этот проект. Но (проект) включает в себя еще одну DLL (B.dll).
Я генерирую "a.snk" с помощью командной строки VS2012 x86 Native Tools. Как это
sn.exe -k C:\A.snk
И я добавляю следующий код в "AssemblyInfo.cs" of (A project). Тогда постройте проект.
[сборка: ComVisible(правда)]
[assembly: AssemblyDelaySign (false)]
[Assembly: AssemblyKeyFile("C:\A.snk")]
После сборки (проект A) появляется ошибка "Сборка сборки не удалась - у ссылочной сборки" B "нет строгого имени". Но (B.DLL) создается третьей стороной.
Как это исправить? Большое спасибо.
2 ответа
Вам не нужно создавать строгое имя для вашей сборки (проекта) только потому, что оно ссылается на сборку со строгим именем. Просто не делайте этого, и вы сможете без проблем скомпилировать сборку. Фактически, все сборки BCL имеют строгие имена и в противном случае на них нельзя было бы ссылаться.
Но, как говорит Филип Стейк в ответе выше, если вам нужно создать строгое имя, вам нужно будет попросить вашего стороннего поставщика подписанную версию B.DLL.
У тебя проблемы. Единственный вариант - попросить третье лицо предоставить строгое имя, иначе вы не сможете сделать это для своего приложения. Смысл этих строгих имен заключается в том, чтобы создать какую-то подотчетность. Будете ли вы нести ответственность за свое приложение, если сторонний dll не работает или делает что-то, что не является "нормальным"?
Этот вопрос был задан до того, как я нашел что-то на msdn: https://social.msdn.microsoft.com/Forums/vstudio/en-US/35930958-9775-4e56-bd38-0362d124ffc4/assign-strong-name-to-third-part-dll