26

dll に署名する理由は、それをグローバル アセンブリ キャッシュに追加するためです。アセンブリは、Java で記述され、J# に移植された css 解析エンジンです。私は VS2008 を使用しているため、J# プロジェクトを作成できません。厳密な名前のキーが割り当てられておらず、構築された今ではその方法がわかりません。

誰にもアイデアはありますか?

4

5 に答える 5

47

少し検索した後、これを行う方法の 1 つを説明するこの投稿を見つけました。

抜粋:

VS.NET コマンド プロンプトから、次のように入力します。

  1. キーファイルを生成します: sn -k keyPair.snk
  2. 提供されたアセンブリの MSIL を取得します: ildasm providedAssembly.dll /out:providedAssembly.il
  3. 元のアセンブリの名前を変更/移動します: ren providedAssembly.dll providedAssembly.dll.orig
  4. MSIL 出力とアセンブリ KeyFile から新しいアセンブリを作成します: ilasm providedAssembly.il /dll /key=keyPair.snk
于 2009-09-04T15:39:38.267 に答える
19

ステップ 1: アセンブリを分解する

ildasm myTest.dll /out:myTest.il 

手順 2: 厳密な名前のキーを使用して再構築する

ilasm myTest.il /res:myTest.res /dll /key:myTest.snk /out:myTestSN.dll 

確認のために、次のコマンドを使用できます。

sn -vf myTestSN.dll

お役に立てれば!

于 2010-02-12T18:56:31.523 に答える
3

このリンクは、署名しているサード パーティのアセンブリの 1 つに、署名している別の署名されていないアセンブリへの参照がある場合など、その方法も示しています。

http://buffered.io/posts/net-fu-signing-an-unsigned-assembly-without-delay-signing

編集:申し訳ありませんが、リンクが無効になっています。

于 2012-05-24T22:40:16.480 に答える
1

厳密な名前ツールは、-R オプションを使用して、既存のアセンブリに再署名できます。ただし、私が理解していることから、アセンブリは事前に署名されているか、遅延署名されている必要があります...署名されていないアセンブリで使用できるかどうかはわかりませんが、試してみることができます

于 2009-09-04T18:29:19.520 に答える
1

Thx、特に PJ8 は、8 年前に回答を投稿して、今日でも私を救ってくれました。「私の」アセンブリは GAC に入れる必要がありましたが、SQLite-pcl-net に依存していました。これはバージョン 1.3.1 の時点では厳密な名前ではありませんが、現在は厳密な名前の SQLitePCLRaw.bundle_green に依存しています。つまり、自分のアセンブリに署名するには、SQLite-pcl-net に署名する必要がありました。この投稿の情報と、今日旅行した他のいくつかの場所から統合された、ゆりかごから墓場までの .bat ファイルになりました。「長所」は次のとおりです。この .bat は、署名するアセンブリの場所で実行されます。3. すべての手順を順番に示します。もちろん、「欠点」は、ildasm、ilasm、および sn が実際に特定の PC のどこにあるかによって、マイレージが異なる場合があることです。

REM Create a new, random key pair
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -k SQLite-net.snk
REM Store the key in the container MySQLiteKeys in the strong name Cryptographic Services Provider (CSP).
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -i SQLite-net.snk MySQLiteKeys
REM Disassemble to Intermediate Language
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\ildasm" SQLite-net.dll /out:SQLite-net.il
REM Rename original file
ren SQLite-net.dll SQLite-net.dll.orig
REM Reassemble to a strong-named version
"c:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm" SQLite-net.il /dll /key=SQLite-net.snk /out:SQLite-net.dll 
REM Verify the assembly 
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -v SQLite-net.dll
REM Deletes MySQLiteKeys from the default CSP
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -d MySQLiteKeys
REM View results 
pause
于 2017-04-06T22:38:36.590 に答える