簡體   English   中英

使用ilasm.exe對未簽名的程序集進行簽名並定位.NET 2.0

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM