Moles 0.94 を実行して、サードパーティのアセンブリで特定の型をスタブ化します。そうしないとテストが困難になります。ローカルでうまく機能し、テストに合格し、ソリューションが正常にコンパイルされます。初めてコンパイルするときは、モール アセンブリを生成するため (\molesassemblies というサブフォルダーにそれらを配置するため)、かなり時間がかかりますが、その後ははるかに高速です。moles は次のように出力します。
Moles : info : compilation : assembly metadata hash unchanged, skipping code generation
問題は、毎回ワークスペースを再同期 (破棄) するビルド サーバーでこの動作をどのように模倣するかということです。これは可能ですか?(現在、TFS 2010 をビルド サーバーとして使用しています)。
単純に \molesassemblies\ というプロジェクト サブフォルダーの内容をチェックインしようとしましたが、ソリューションのコンパイル中に msbuild が moles フレームワークを呼び出したときに、アセンブリが既にそこにあることを認識してコード生成をスキップすることを期待していました。しかし、それだけではうまくいかないようでした。フレームワークは、コードを再生成する必要があると考えたようで、チェックインされたアセンブリが読み取り専用であると不平を言いました。
00:00:00.00> moles
Moles : info : metadata : ignoring reference D:\Builds\49\mycompany\BUILD-NAME\Sources\Products\Product\Tests\TestHelpers\MolesAssemblies\3rdparty.assembly.moles.dll
Moles : info : metadata : loading D:\Builds\49\mycompany\BUILD-NAME\Sources\3rdPartyBinaries\3rdparty\3rdparty.assembly.dll
Moles : info : compilation : output assembly name: 3rdparty.assembly.moles
Moles : info : code : found 2912 types
Moles : info : code : visibility: exported or assembly(3rdparty.assembly.moles)
00:00:03.10> code generation
Moles : info : code : generating code at D:\Builds\49\mycompany\BUILD-NAME\Sources\Products\Product\Tests\TestHelpers\obj\Release\Moles\sk\m.g.cs
00:00:03.44> stubs generation
Moles : info : code : generated 2274 stub types
00:00:08.32> moles generation
Moles : info : code : generated 2638 mole types
00:00:45.13> compiling
Moles : error : compilation : D:\Builds\49\mycompany\BUILD-NAME\Sources\Products\Product\Tests\TestHelpers\MolesAssemblies\3rdparty.assembly.moles.dll readonly [D:\Builds\49\mycompany\BUILD-NAME\Sources\Products\Product\Tests\TestHelpers\TestHelpers.csproj]
00:02:27.44> moles generator 1 errors, 0 warnings
C:\Program Files\Microsoft Moles\bin\Microsoft.Moles.targets(79,5): error MSB3073: The command ""C:\Program Files\Microsoft Moles\bin\moles.exe" @D:\Builds\49\mycompany\BUILD-NAME\Sources\Products\Product\Tests\TestHelpers\obj\Release\Moles\moles.args" exited with code -1009. [D:\Builds\49\mycompany\BUILD-NAME\Sources\Products\Product\Tests\TestHelpers\TestHelpers.csproj]
Result: error while copying output (-1009 - 0xfffffc0f)
MolesAssemblies:
3rdparty.assembly.moles ignored because already referenced from other location
Done Building Project "D:\Builds\49\mycompany\BUILD-NAME\Sources\Products\Product\Tests\TestHelpers\TestHelpers.csproj" (default targets) -- FAILED.
これを機能させるために私ができることについてのガイダンスをいただければ幸いです。
ありがとう。