3

VS2012 では、署名に SNK ファイルではなく PFX ファイルが使用されているようです。これは署名の遅延に関連しているという印象を受けます。しかし、私は気にしません。

アプリケーションをビルドするときに、「sn -tp <my assembly>」を使用して、署名されていることを確認できます。

デバッグ フォルダをマージして /keyfile ディレクティブを使用すると (SNK ファイルで成功していた方法で)、DLL は 1 つの署名されていない DLL にマージされます。

元の DLL から公開キーを抽出し、これを /keyfile ディレクティブで使用するなど、巧妙な回避策を提案する記事を読んだことがありますが、強力に署名された DLL を作成することもできませんでした。

では、ilmerge で PFX ファイルを操作して、アセンブリが厳密に型指定されるようにするには、どうすればよいでしょうか?

ありがとう

4

1 に答える 1

2

私は最近、まったく同じことをしようとしていました (今回は VS 2015 を使用しましたが、結果は同じであると確信しています)。

PFX ファイルはデフォルトでパスワード保護されており、(この記事の執筆時点では) ILMerge はそれらをサポートしていないようです。

手動署名

あなたが説明した「巧妙な回避策」がここに示されています。これがこれを達成する唯一の方法のようです。

>sn -p some.pfx some.pub
>ilmerge /keyfile:some.pub /delaysign /out:merged\some.dll some.dll
>sn -R merged\some.dll some.pfx

PFX ファイルから公開鍵を抽出するにはユーザー入力が必要であることに注意してください。以前はパスワードをパイプで渡すことができたと言われていますが、現在のバージョンのsn.exeではコンソールのリダイレクトが許可されていません。

自動 (CI ビルド システム) 署名

自動化された方法で ILMerged アセンブリに強力な署名を付けるには、それらのキーをローカル ビルド マシンにインストールする必要があります。これには、パスワード入力の形式でのユーザー入力が必要ですが、ビルド マシンごとに 1 回だけ実行する必要があります。

以前と同様に、PFX ファイルから公開鍵を抽出する必要があります (これは 1 回だけ行う必要があり、PUB ファイルは PFX と共に保存することも、ソースにチェックインすることもできます)。

ワンタイム セットアップ コードは次のとおりです (どちらもパスワードの入力が必要です)。

>sn -p some.pfx some.pub
>sn -i some.pfx SomeContainerName

自動ビルド中に、次を実行できるようになりました。

>ilmerge /keyfile:some.pub /delaysign /out:merged\some.dll some.dll
>sn -Rc merged\some.dll SomeContainerName
于 2015-11-25T14:15:06.767 に答える