0

.NET 2.0 アセンブリのみをサポートする SQL Server 2008 用の CLR アセンブリを作成しています。さらに、SQL Server では、登録するアセンブリごとに厳密な名前のキーも必要です。

作成しようとしているアセンブリは、.NET 2.0 バージョンの json.net ( https://json.codeplex.com/ ) を参照しています。ただし、Newtonsoft.Json.dll 自体が署名されていないため、私のプロジェクトは SNK ファイルを生成できません。(少なくとも、プロジェクトをビルドして署名しようとしたときに発生するエラーです。)

ここで説明されているトリックを使用してこれを回避しました: http://buffered.io/posts/net-fu-signing-an-unsigned-assembly-without-delay-signing/

ただし、プロジェクトの SNK を使用して Newtonsoft.Json.dll を再アセンブルする場合、.NET 2.0 より上位のターゲット フレームワークで DLL を生成する必要があります。これは、SQL Server で次のエラーが発生しているためです。

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

ターゲット フレームワーク .NET 2.0 で ilasm.exe にアセンブリを生成させる方法を知っている人はいますか? または、おそらく私は問題に完全に間違って取り組んでいます.2008年にCLRアセンブリでNewtonsoft.Jsonを使用するためのより良い解決策があれば、知りたいです. ありがとうございました!

4

1 に答える 1

3

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

(その他)

「Visual Studio 2013 x64 ネイティブ ツール コマンド プロンプト」から取得した v4 を実行すると、.NET 4 と互換性のあるアセンブリが作成され、v2 を実行すると、.NET 2 と互換性のあるアセンブリが作成されます。

于 2014-10-20T21:34:59.690 に答える