2017-06-06 11 views
1

強く名前のついたアセンブリ用に単体テストを書き込もうとしています。単体テストはUnitTestsプロジェクトにあり、コードはプラグインプロジェクトにあり、両方とも同じソリューションの一部です。プラグインは強く署名されています。 UnitTestsにはプラグインへの参照があり、すべてがうまくコンパイルされます。私はプラグインのテスト作業のために署名無効にした場合C#で署名されたアセンブリをユニットテストする

私はテストが例外で失敗テストを実行しようとすると、

を「ファイルまたはアセンブリをロードできませんでした...厳密な名前の検証に失敗しました」が、署名がありますプラグインの使用方法に必要です。これをどうすれば解決できますか?

+0

テストプロジェクトにも署名してみましたか? –

+0

@MichaelCoxon私もテストプロジェクトに署名しようとしました。同じキーを使用しましたが、エラーは変更されません。 – Ceribia

+0

私はあなたが[sn.exe -vR](https://stackoverflow.com/questions/1845222/how-to-use-sn-exe-vr)でそれをオフにすることができると思うが、私は構文を覚えていない.. – stuartd

答えて

0

これは、私が遭遇した別のエラーの結果であった。プラグインをビルドするときにビルドが失敗することがありました。

アセンブリ署名に失敗しました。出力が署名されていない可能性があります - エラー署名アセンブリ - プロセスが別のプロセスで使用されているため、ファイルにアクセスできません。

このエラーを修正するより多くの場合、このエラーは修正されません。 2番目のビルドでは、Plugins.dllが残っており、署名が遅れていることが判明しました。 UnitTestsは、DLLに署名したこの遅延を受け取り、わかりやすく不平を言うでしょう。

これが実行している問題であることを確認するには、開発者コマンドプロンプトを開き、「sn -vf Plugins.dll」を実行します。出力が "Plugins.dllが遅延署名されたアセンブリまたはテスト署名されたアセンブリ"の場合、何らかの問題が発生する可能性があります。

私が使用している回避策は、動作するまで繰り返しPlugins.dllに署名しようとしています。これを行うには私が最初に走った:

のsn -i ../../FakeXRMTesting.pfx keyContainer

をパスワードなしで仕事ができるようSNキーコンテナを設定します。次の私は、符号のみを遅らせることPlugins.dllを設定し、ビルド後のイベント

を追加しました: "プログラムファイル(x86の)" \ "マイクロソフトのSDK" \ WINDOWS \ v8.0A \:

Cを繰り返し\ bin \ "NETFX 4.0 Tools" \ sn.exe -Rc Plugins.dll keyContainer || goto:repeat

通常、作業前に4-5で失敗します。これは非常にはっきりとはっきりしたものであり、dllにアクセスしているプログラムがどんなものであれ停止することが望ましいでしょう。

+1

あなたが使用しているマルウェア対策製品が何であれ、別のものを購入する時が来ました。 –

+0

@ HansPassantおそらく、私は現時点でそれを証明する権限を持っていません。私はそれが犯人であるという証拠が得られたら更新します。 – Ceribia

関連する問題