Подписание неподписанной сборки и ориентация на.NET 2.0 с помощью ilasm.exe

Я создаю сборку CLR для SQL Server 2008, которая поддерживает только сборки.NET 2.0. Кроме того, SQL Server также требует ключ строгого имени для каждой сборки, которую вы хотите зарегистрировать.

Сборка, которую я пытаюсь создать, ссылается на версию.NET 2.0 json.net ( https://json.codeplex.com/). Тем не менее, мой проект не может генерировать файл SNK, потому что сам Newtonsoft.Json.dll не подписан. (По крайней мере, это ошибка, которую я получаю, когда пытаюсь построить свой проект и подписать его.)

Я справился с этим, используя трюк, описанный здесь: http://buffered.io/posts/net-fu-signing-an-unsigned-assembly-without-delay-signing/

Однако при повторной сборке Newtonsoft.Json.dll с SNK моего проекта он должен генерировать DLL с целевой платформой выше, чем.NET 2.0. Я знаю это, потому что я получаю следующую ошибку в SQL Server:

CREATE ASSEMBLY for assembly 'Newtonsoft.Json' failed because the assembly is built for an unsupported version of the Common Language Runtime.

Кто-нибудь знает, как заставить ilasm.exe генерировать сборку в целевом фреймворке.NET 2.0? Или, возможно, я совсем неправильно подхожу к проблеме - если есть лучшее решение для использования Newtonsoft.Json в сборке CLR в 2008 году, я бы хотел знать. Спасибо!

1 ответ

Решение

Убедитесь, что вы бежите ilasm из правильного каталога. Каждая версия.NET Framework имеет свои инструменты в своем каталоге.

Если вы используете один из PATH, вы можете набрать where ilasm в ответ на вопрос, какая версия была найдена.

Я подозреваю, что этот совет из блога, на который вы ссылаетесь, сбивает вас с пути

Нам нужно открыть командную строку, в которой есть двоичные файлы платформы.NET в переменной среды PATH. Самый простой способ сделать это - открыть командную строку Visual Studio (которая обычно находится в подпапке "Инструменты Visual Studio" в "Visual Studio 20XX" в меню ваших программ).

Никаких упоминаний о версии или факте, что среда выполнения.NET Framework установила инструменты для большего количества версий, чем у вас устанавливается Visual Studio.

Например, в моей системе у меня есть ilasm в

C:\Windows\Microsoft.NET\Framework\v2.0.50727

а также

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

(и другие)

При запуске версии 4, которую я получаю из "Командная строка собственных инструментов Visual Studio 2013 x64", будет создана сборка, совместимая с.NET 4, а при запуске версии v2- сборка, совместимая с.NET 2.

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