3

何度もプレイした後、テストプロジェクトを除くすべてのプロジェクトでビルドを実行できるようにTFSを取得することができました。これらにはモルアセンブリがあります。

私が得ているエラーは

C:\ Program Files \ Microsoft Moles \ bin \ Microsoft.Moles.targets(79):
コマンド "" C:\ Program Files \ Microsoft Moles \ bin \ moles.exe "
@" C:\ Builds \ 2 \ cv2 \ DevBranchBuild \ Sources \ CV.BL.Tests \ obj \ Release \ Moles \moles.args""
はコード-1002で終了しました。

警告は

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(1360):
この参照を解決できませんでした。
アセンブリ"CV.DAL.Moles、Version = 1.0.0.0、Culture = neutral、processorArchitecture=MSIL"が見つかりませんでした。
アセンブリがディスク上に存在することを確認してください。
この参照がコードで必要な場合、コンパイルエラーが発生する可能性があります。

CV.DALは、私がモリングしているアセンブリです。

私は最新バージョンのpexとmolesを使用しています。

また、CV.DAL.molesファイルをTFSにチェックインしました(アセンブリではありません)。すべてが私のローカルマシンで完全に正常に構築されます。ビルドに使用しているマシンの構成はまったく同じです。正確には、1つは32ビットで、もう1つは64ビット:o(深刻な監視)です。

何か案は?

これは、ブランチをマージするときにゲートチェックインを壊しているため、ペックスとモグラをまったく役に立たないものにします。これは、かなりの時間を費やしたため、非常に残念です。

編集

どのmolesAssembliesディレクトリですか?
ほくろのインストールフォルダまたはプロジェクトの下のディレクトリ?
インストールフォルダには、両方のマシンで同じファイルとファイルサイズがあります。

4

2 に答える 2

3

これは 2 つの問題のいずれかである可能性があります。私は少し前に両方の問題に遭遇しました。

(one) 依存関係の 1 つが 32 ビットとしてマークされています。これは、cv.dal.dll またはその依存関係のいずれかである可能性があります。Moles.exe は、実行のためにアセンブリをロードする必要があります。Load.RefrectionOnly を使用しない理由は不明です。また、moles.exe は ILONLY であるため、64 ビット マシンでは 64 ビット プロセスとして実行されます。これにより、ほくろの生成が失敗します。

これを回避するには、moles.exe を 32 ビットのみに設定します。

corflags moles.exe /Force /32BIT+

(2) 並列ビルドを使用する場合 (たとえば、.msbuild ファイルでオプション BuildInParallel="true" を指定するか、オプション /m を指定して msbuild.exe を実行する)、かつ単体テスト プロジェクトの PreBuildEvent でモルを作成する場合は、実行します。 msbuild ターゲットで問題が発生します。PreBuildEvent は参照が解決される前に実行され、参照の解決時にプロジェクト間の依存関係のチェックが行われるため、依存プロジェクトのビルドが完了する前に PreBuildEvent の実行が開始される可能性があります。

これに対する適切な回避策はありません。非並列ビルド (ビルドが遅くなります) を使用するか、事前に生成された *.moles.dll をソース管理にチェックインできます (これは、成形アセンブリに触れるたびに維持および更新する必要があります)。

于 2011-03-23T03:05:33.477 に答える
1

Moles の古いバージョンでも同様の問題がありました。.moles ファイルに disableCache="true" を追加すると、これらの問題が修正されました

于 2011-09-15T11:40:36.673 に答える