Сбой генерации сборки - у ссылочной сборки "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

Другие вопросы по тегам