4

単体テスト(mstest)を実行すると、次のように呼び出すと例外が発生しますassembly.GetManifestResourceNames()

呼び出されたメンバーは、動的アセンブリではサポートされていません。

これは問題のあるコードです:

Dim assembly As Assembly = Assembly.GetAssembly(Me.GetType())
Dim names = assembly.GetManifestResourceNames()

しかし、私がドキュメントを正しく理解していれば、それは機能するはずであり、私が使用した場合にのみ、AssemblyBuilder.GetManifestResourceNames()この例外が発生するはずです。

.NETソースをステップスルーしようとすると、次のメッセージが表示されます。

mscorlib.dll!System.Reflection.Emit.InternalAssemblyBuilder.GetManifestResourceNames()に使用できるソースがありません

なぜこの例外をスローするのですか?私は何かを逃しましたか?

テストでMoq(オプション付きmock.CallBase = True)を使用していることを忘れてしまいました。

4

2 に答える 2

2

回避策を見つけました。プロシージャを共有(c#では静的)にすると、'assembly.GetManifestResourceNames()'が呼び出され、機能します。

于 2011-09-12T14:44:15.187 に答える
0

staticを使用するだけでは機能しませんでしたが、別の解決策を見つけました。

私のセットアップ:

  1. MVCプロジェクト(ウェブサイト)(参考文献2)
  2. ロジックプロジェクト(参考文献3)
  3. コンテンツライブラリ(ファイルのみ)

GetManifestResourceNames()私のウェブサイトは、コンテンツライブラリからにアクセスしようとしたロジックプロジェクトのメソッドを呼び出しました。これにより、エラーが発生しました。

次に、ロジックプロジェクトからコンテンツ参照を削除し、それを自分のWebサイトに直接追加しました。他の変更はなく、現在は機能しています。

于 2016-06-23T18:45:53.997 に答える