3

Webサービスのテストプロジェクトがあり、デバッグモードでテストを実行すると、すべて正常に機能します。ただし、テストを実行すると、コードカバレッジを取得しようとした参照アセンブリに対して次のエラーが発生します。

クラス初期化メソッドWebServiceTest.wstest.MyClassInitializeが例外をスローしました。System.IO.FileLoadException:System.IO.FileLoadException:ファイルまたはアセンブリ'TestAssembly、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=57f286581e1d278a'またはその依存関係の1つを読み込めませんでした。厳密な名前の検証に失敗しました。(HRESULTからの例外:0x8013141A)---> System.Security.SecurityException:厳密な名前の検証に失敗しました。(HRESULTからの例外:0x8013141A)。私が見つけたものはすべて、TestAssemblyをGACに登録すると言われています。これは私が何をすべきですか?デバッグモードで動作するのはなぜですか?ありがとうございました

4

3 に答える 3

5

私は同じ問題を抱えていました、そして以下のリンクは私を助けました...

http://weblogs.asp.net/soever/archive/2005/07/23/420338.aspx

VS.NET 2005:署名されたアセンブリのコードカバレッジ現在、VS.NET 2005を使用するアプリケーションに取り組んでいます。単体テストやコードカバレッジなど、すべてのTDDツールが利用できるため、それらを使い始めました。

署名したアプリケーションでコードカバレッジを開始すると、次の例外が発生しました。

テストメソッドXが例外をスローしました:System.IO.FileLoadException:ファイルまたはアセンブリ'Y、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=Z'またはその依存関係の1つを読み込めませんでした。HRESULT:0x8013141A厳密な名前の検証に失敗しました。---> System.Security.SecurityException:HRESULTからの例外:0x8013141AXで厳密な名前の検証に失敗しました。

あなたがそれについて考えるならば、それほど奇妙ではありません。アセンブリは署名されています。コードカバレッジにはコードインストルメンテーションが必要です。これは、アセンブリの変更を意味し、アセンブリが正しくないため、検証に失敗します。

解決策は、インストルメンテーション後にアセンブリを辞任することです。

ソリューションアイテムでlocaltestrun.testrunco​​nfigファイル(または同様のもの)を開く(ダブルクリックする)と、[コードカバレッジ]セクションで再署名を有効にできます。これで問題は解決します。

于 2010-07-19T09:28:39.183 に答える
4

次のコマンドを実行して、特定のマシンで署名されたすべてのアセンブリチェックを無効にすることもできます。

sn.exe -Vr *

ただし、セキュリティの脆弱性が発生するため、注意して使用してください。これは、カバレッジを測定する内部仮想マシンで使用します。sn.exeそのコマンドの範囲を狭めることが可能であるため、の使用法を見てください。

于 2011-05-10T18:23:18.353 に答える
0

VS.NetUltimate2012を使用しています

そしてこの解決策は私を助けました:

[プロジェクトのテスト]->[プロパティ]->[ビルド]タブ->[シリアル化アセンブリの生成]を[オフ]->[完了]に切り替えます。

于 2014-11-26T20:23:11.327 に答える