2 つのソリューションがあり、どちらも各プロジェクトのプロパティ ページの [署名] ページで [アセンブリに署名する] チェック ボックスがオンになっています。
ソリューション A はすべてのプロジェクトに署名し、問題はありません。実際、ソリューション A は、アセンブリに厳密な名前がなく、最終的なアプリケーション アセンブリのビルドに失敗したと訴えました。確認したところ、そのアセンブリにデジタル署名がありませんでした。
そのアセンブリは、別のソリューションであるソリューション B で作成され、参照されていました。私はそのソリューションに移動し、アセンブリに署名するために同じステートメントを追加しました。また、ソリューション A のようにチェックして、クリック ワンス マニフェストに署名しました。
ソリューション B は、問題、警告、エラーなしでビルドします。Visual Studio は、DLL と付随するテスト アプリケーションをビルドしました。最初にソリューションをクリーンアップし、デバッグしてリリースしてから、デジタル署名なしでソリューションをビルドしました。
ブラウザを使用して選択したデジタル証明書を購入しました。デジタル証明書にはパスワードがあり、PFX 拡張子が付いています。
ソリューション A では、ソリューション内のすべてのプロジェクトのパスワードを入力するように求められました。アセンブリに署名するようにすべてのプロジェクトを設定しました。解決策 B ではパスワードを要求されませんでした。
問題が発生したときは、ソリューションとプロジェクトをゼロから再作成し、既存の CS ファイルをソリューションに追加するだけでよいと考えました。基本的に、プロジェクト ファイルとソリューション ファイルを再作成しました。それはまったく同じ結果でした。ソリューション A と B の両方でアセンブリ情報ファイル Project\AssemblyInfo.cs を比較したところ、実際の違いは見られませんでした。
アップデート:
リクエストごとに、ビルド ウィンドウの出力を次に示します。残念ながら、デフォルトでは詳細なビルド情報はありません。私はそれを望んでいました。
BuildVersionIncrement: Pre-build process : Completed
1>------ Build started: Project: SolutionB, Configuration: Release Any CPU ------
1> SolutionB -> F:\Projects\SolutionB\Versions\2014\SolutionB\bin\Release\SolutionB.dll
2>------ Build started: Project: TesterSolutionB, Configuration: Release Any CPU ------
2> TesterSolutionB -> F:\Projects\SolutionB\Versions\2014\TesterSolutionB\bin\Release\TesterSolutionB.exe
========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
BuildVersionIncrement: Post-build process : Completed
更新 2: C#.Net を使用しています。1 つのプロジェクトはクラス ライブラリで、もう 1 つは Winforms プロジェクトです。.Net Framework 4.5.1 を選択しました。
何が原因で、どうすれば問題を解決できますか? 残念ながら、出力ウィンドウには詳細なビルドの詳細が表示されません。