1

私のアプリケーションには、コンポーネント サービス内で実行されるコードが含まれているため、ビジネス ルール レイヤー (およびその依存関係) を GAC に登録する必要があります。これらの依存関係の 1 つが FooCore.dll で、これにはアプリ全体から見えるクラスとサービスが含まれています。

FooCore のクラスに新しいメソッドを追加するまで、すべてが正常に機能していました。これで、単体テストを実行すると、アセンブリの最新バージョンで GAC を更新しても、この新しいメソッドを呼び出すすべてのテストで MissingMethodException がスローされます。唯一の修正は、テストを実行する前に GAC から FooCore を削除することです。

私は次のことを試しました:

  • ソリューション全体を再構築し、GAC の内容を更新してから、テストを実行 = 失敗
  • テスト プロジェクトで FooCore アセンブリ参照を削除して再追加 = 失敗
  • プロパティで FooCore が「ローカルにコピー」として設定されていることを確認 = 失敗

VSTS が GAC からではなく、明示的に定義された場所から参照アセンブリをロードするようにするにはどうすればよいですか?

4

2 に答える 2

1

さらなる調査により、この問題に関するこのフォーラム スレッドが見つかりました。この問題は、古いバージョンのアセンブリを保持している VS2008 のパフォーマンス分析機能が原因である可能性があると誰かが示唆しています。

次の方法で問題を解決できました。

  1. 次に、ソリューションを再構築します
  2. GAC 内のすべてを更新してから、
  3. テストプロジェクトでアセンブリ参照を削除して再度追加し、次に
  4. Visual Studio 2008 を閉じて再度開く

これらの手順のどれが明示的に必要かはわかりませんが、この「キッチン シンク」アプローチで問題が解決しました。

更新:この Microsoft の記事では、ソリューションがコンパイルされると、「ローカルにコピー」が true に設定されていても、GAC で見つかったアセンブリが出力 bin\ フォルダーにコピーされることはないと記載されています。

于 2008-10-14T19:56:22.577 に答える