RouteDebug от NuGet не имеет строгого имени - PullRequest
2 голосов
/ 25 марта 2011

Сегодня у меня была проблема с маршрутизацией в моем приложении ASP.NET MVC 3 (с Visual Studio 2010).

Поэтому я решил установить ASP.NET RouteDebugger и исправитьмоя проблема с маршрутом

После того, как я получу пакет через NuGet , мой проект больше не собирается:

referenced assembly ' RouteDebug' does not have a strong name

Я могу загрузить исходный код RouteDebugger и собрать (и строго подписать) это сам, но это не цель NuGet, не так ли;)

У кого-нибудь еще была эта проблема, и, возможно, ее исправили?

Ответы [ 4 ]

3 голосов
/ 25 марта 2011

Ну, проблема на самом деле не связана с NuGet. Вы не можете ссылаться на неподписанную сборку из подписанной сборки. И поскольку RouteDebug.dll, содержащийся в пакете NuGet, не имеет строгой подписи, вы не сможете использовать его, если ваше приложение имеет строгую подпись. Таким образом, у вас есть две возможности выбора:

  1. Загрузите исходный код RouteDebug и откомпилируйте его самостоятельно, подписав его сильным ключом
  2. Удалите подпись сильного ключа из вашего хостинг-приложения.
1 голос
/ 28 октября 2011

Можно подписать уже скомпилированную сборку без использования исходного кода. Это объясняется здесь: http://www.geekzilla.co.uk/ViewCE64BEF3-51A6-4F1C-90C9-6A76B015C9FB.htm. Короче говоря, вам нужно использовать ildasm, чтобы получить IL для сборки, а затем использовать ilasm для регенерации dll, на этот раз со знаком:

ildasm SomeAssembly.dll /out:SomeAssembly.il
ren SomeAssembly.dll SomeAssembly.dll.orig (for backup purposes)
ilasm SomeAssembly.il /dll /key= keyPair.snk

Но да, использование неподписанных пакетов NuGet в проекте с подписанными сборками - трудная задача ...

0 голосов
/ 18 мая 2016

Это распространенная проблема, поскольку многие пакеты nuget не имеют строгих имен.Это можно обойти, динамически присваивая всем включенным пакетам nuget строгое имя во время сборки.Включите пакет Nuget и добавьте пакет «Brutal.Dev.StrongNameSigner» в ваш проект.Затем в вашем файле .csproj добавьте ссылку следующим образом:

<Target Name="BeforeBuild">
  <Exec ContinueOnError="false"
        Command="&quot;..\packages\Brutal.Dev.StrongNameSigner.1.8.0\tools\StrongNameSigner.Console.exe&quot; -in &quot;..\packages&quot;" />
</Target>

Затем во время компиляции ваши неподписанные ссылки на nuget получат сгенерированную подпись, а ваши ссылки на сборки будут обновлены, чтобы соответствовать вновь сгенерированной подписи.

nuget: https://www.nuget.org/packages/Brutal.Dev.StrongNameSigner/

проект: https://github.com/brutaldev/StrongNameSigner

0 голосов
/ 30 марта 2011

Это признанный недостаток nuget, как обсуждено здесь .

...