状況は次のとおりです。
- 完全なソースをクラスライブラリにリリースしたい
- 公開したくないキーファイルを使用して、署名したバイナリもリリースしたい
- バッチファイルとビルド前のステップを提供します。これにより、存在しない場合はローカルで新しいキーファイルが作成され、誰でもすぐにソースコードの使用を開始できるようになります。
- テストプロジェクトでは、メインプロジェクトの内部クラスを参照する必要があります
- 内部クラスにアクセスするには
[assembly: InternalsVisibleTo("...")]
、メインプロジェクトのAssemblyInfo.csファイルに属性を追加する必要があります - プロジェクト出力に署名しているので、その属性のPublicKey部分を指定する必要があります
- これは、公開したくないキーファイルにバインドされます
では、どうすればこれを解決できますか?
テストライブラリではなくメインプロジェクトの出力に署名し、InternalsVisibleTo
属性にアセンブリ名のみを指定すると、次のコンパイル時エラーが発生します。
エラー1フレンドアセンブリ参照'Mercurial.Net.Tests'が無効です。厳密な名前で署名されたアセンブリは、InternalsVisibleTo宣言で公開鍵を指定する必要があります。C:\ Dev \ VS.NET \ Mercurial.Net \ Mercurial.Net \ Properties \ AssemblyInfo.cs 22 31 Mercurial.Net
したがって、明らかに、テストプロジェクトの出力に署名しないだけでは十分ではありません。
プロジェクトに署名する設定を削除し、バイナリビルドスクリプトの一部としてプロジェクトファイルを変更する唯一のオプションはありますか?すなわち。<SignAssembly>false</SignAssembly>
ビルドする前に、プロジェクトファイルの要素を探して変更しますか?