[英]Signing an unsigned assembly and targeting .NET 2.0 using ilasm.exe
我正在為SQL Server 2008創建CLR程序集,該程序集僅支持.NET 2.0程序集。 此外,SQL Server還需要在要注冊的每個程序集中使用強名稱鍵。
我嘗試創建的程序集引用了json.net的.NET 2.0版本( 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重新組裝時,它必須使用目標框架高於.NET 2.0的DLL生成該DLL。 我知道這是因為我在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中生成程序集? 也許我完全解決了這個問題-如果有更好的解決方案在2008年的CLR大會上使用Newtonsoft.Json,我很想知道。 謝謝!
確保從正確的目錄運行ilasm
。 每個.NET Framework版本在不同目錄中都有其工具。
如果您使用的是PATH中的版本,則可以在提示時鍵入where ilasm
,以找到要查找的版本。
我懷疑您所鏈接的博客中的建議使您誤入歧途
我們需要打開一個命令提示符,該提示符在PATH環境變量中具有.NET Framework二進制文件。 最簡單的方法是打開Visual Studio命令提示符(通常在程序菜單中“ Visual Studio 20XX”的“ Visual Studio Tools”子文件夾下)。
沒有提到版本,也沒有提到.NET Framework運行時為更多版本安裝了工具,而沒有安裝Visual Studio。
例如,在我的系統上,我有ilasm
C:\\ Windows \\ Microsoft.NET \\ Framework \\ v2.0.50727
並且
C:\\ Windows \\ Microsoft.NET \\ Framework64 \\ v4.0.30319
(和別的)
運行v4(這是我從“ Visual Studio 2013 x64本機工具命令提示符”中獲得的內容)將創建一個.NET 4兼容程序集,運行v2會創建一個.NET 2兼容程序集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.