asp.net どのようにdllに組み込まれているアセンブリに署名するのですか?flute.dll



visual-studio-2008 assembly-signing (4)

私がdllに署名する理由は、グローバルアセンブリキャッシュに追加したいからです。 アセンブリは、Javaで書かれた、J#に移植されたCSS解析エンジンです。 私はVS2008を使っているので、J#プロジェクトを作ることはできません。 これには強力な名前キーが割り当てられていないため、作成された時点でどのように行うかわかりません。

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


Answer #1

ステップ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

お役に立てれば!


Answer #2

ちょっとした検索の後、私はそれを行う方法の1つを説明するこの記事を見つけました。

Exerpt:

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

  1. KeyFileを生成する: 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

Answer #3

特に8年前に回答を投稿してくれたThx、特にPJ8は今日も私を助けてくれました。 "私"のアセンブリはGACに入る必要がありましたが、SQLite-pcl-netに依存していました。バージョン1.3.1では強い名前のSQLitePCLRaw.bundle_greenに依存していますが、強力な名前は付けられていません。 だから自分のアセンブリに署名するためにSQLite-pcl-netに署名しなければなりませんでした。 私はこのポストの情報と今日旅行したいくつかの場所から情報を集約したクレードルから墓地の.batファイルに終わった。 "プロ"は1.です。この.batは、署名したいアセンブリの場所で実行されます。2. 3つのツールがどこにあるかについてのヒントを少なくとも示しています。 3.すべてのステップを順に示します。 当然のことながら、あなたのマイレージは、あなたの特定のPCに実際にildasm、ilasm、snがどこにあるかによって異なる場合があります。 とにかく歓声。

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

Answer #4

Strong Nameツールは、-Rオプションを使用して既存のアセンブリに再署名することができます。 しかし、私が理解していることから、アセンブリは以前に署名されていなければなりません。つまり、署名されていないアセンブリでそれを使用できるかどうかは分かりませんが、試してみることができます





assembly-signing