Я создаю сборку CLR для SQL Server 2008, которая поддерживает только сборки .NET 2.0. Кроме того, SQL Server также требует наличия сильного ключа с каждой сборкой, которую вы хотите зарегистрировать.Подписание беззнаковой сборки и таргетинга .NET 2.0 с помощью ilasm.exe
Сборка Я пытаюсь создать ссылки на версию .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 году, я бы с удовольствием узнал. Спасибо!
Вам действительно нужно * json * в сборке, используемой в SQL Server? Если вы на самом деле не используете его, просто удалите ссылку. – acfrancis
@acfrancis - Я абсолютно согласен с тем, что такого рода функциональность не должна быть в CLR.Однако, учитывая ограничения моего проекта, мне нужно уметь интерпретировать json через хранимую процедуру SQL. Это ужасно, я знаю, но это нужно сделать. Вы знаете какой-либо более простой способ сделать это, кроме использования Newtonsoft.Json? Опять же, единственной функцией, которая мне нужна, является возможность декодирования json-документа в объект внутри C#. – cody