0

継続的な構成用に設定されたビルド定義で構成された VS2010 TFS ビルド サーバーがあります。

私の BizTalk 2010 ソリューションには、200 以上のテストがあります。これらのテストはすべて私の開発ボックスでは正常に実行されますが、ビルド サーバーでは、フラット ファイルを扱うテストで "Microsoft.BizTalk.Tom.resources が見つかりません" というエラーが発生します。私の推測では、これはアセンブリMicrosoft.BizTalk.TOM.dllに含まれるリソース ファイルであると思われます。ただし、リフレクターを使用したため、リソースが表示されません。

Microsoft.BizTalk.TOM.dll は、BizTalk と共に次のフォルダーにインストールされる .Net 2 dll であることがわかります。

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies

ビルド サーバーを確認したところ、このアセンブリが上記のフォルダーに存在することを確認しました。

同じ問題に関する 3 つの異なるブログ投稿に基づいて、次のことを試しました。

  1. dll への参照を含め、copylocal を true に設定
  2. アセンブリを .Net 2 GAC に追加しました
  3. [テストの設定] ダイアログの [展開] タブから [展開する追加フ​​ァイル] リストにアセンブリを追加しました
  4. [テストの設定] ダイアログの [単体テスト] タブから [テストの実行時に使用するフォルダー] リストにアセンブリを追加しました

テストが失敗した後、\TestResults\Out フォルダーを確認します。Microsoft.BizTalk.TOM.dll がここにコピーされていることがわかります。

開発サーバーの同等のフォルダーを確認すると、ビルド サーバーに存在しないファイルは表示されません。

次に試すことができるアイデアはありますか?

4

1 に答える 1

2

次のフォルダーに Microsoft.BizTalk.Tom.dll のコピーが見つかりました: C:\Users\tfs_service\AppData\Local\assembly\dl3\randomname\

調査の結果、これがアセンブリの「シャドウ コピー」が格納されている場所であることが判明しました。 キャッシュ AppData\Local\assembly\dl3 とは何ですか?

シャドウ コピーが作成される理由と、それを防止する方法を知りたいのですが、私の場合、アプリ ドメインは MsTest でしょうか?

シャドウ コピーを削除し、GAC からアンインストールしたため、次のフォルダーにのみコピーが残りました。

  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies
  • C:\Program Files (x86)\Common Files\Microsoft BizTalk

シャドウ コピーを削除してサーバーを再起動すると、テストが正常に実行されるようになりました。

于 2012-11-26T10:23:01.653 に答える