ASP.NET MVC アプリケーションでIoC、O/RMなどをブートストラップするために構築しているフレームワーク ライブラリなど、作成中のすべての新しいコードでCode Contractsの使用を開始しました。このフレームワーク ライブラリ用に、次のような簡単なビルド スクリプトを作成しました。
@echo off
echo.
echo Cleaning build output (removing 'obj' and 'bin' folders)...
for /f "tokens=*" %%G in ('dir /b /ad /s bin') do rmdir /s /q "%%G"
for /f "tokens=*" %%G in ('dir /b /ad /s obj') do rmdir /s /q "%%G"
rmdir /s /q build
echo.
echo Starting the build...
call "%VS100COMNTOOLS%\vsvars32.bat"
msbuild Integration.build /target:Build
echo.
echo Done!
pause
これはうまくいきません。build
これを実行すると、何らかの理由でフォルダーに最終的に残るのは、とも呼ばれる によって完全に書き換えられていないアセンブリと、出力ディレクトリに散らばるファイルですccrewrite
。.pdb.original
.rewritten
.csproj.FileListAbsolute.txt
機能するのは、最初に Visual Studio 2010 でソリューションを構築し、バッチ ファイルの 3 行目から 7 行目をコメント アウトして、再度実行することです。その後、適切に書き換えられたアセンブリが作成され、ファイル.pdb.original
も.rewritten
ファイルもありません。
このことから私が推測したのは、Visual Studio 2010 がコード コントラクト リライターを何らかの方法で適切にトリガーするため、Visual Studio 2010 ビルドから得られたアセンブリがコマンド ライン MSBuild 呼び出しによって再利用されるため、バッチ スクリプトが基本的に行うことはファイルをbuild
ディレクトリにコピーしています。むしろ役に立たない、言い換えれば。
私はこれを読みましたccrewrite
が、ジョンの問題は明らかに何かをしているので、私の問題とは異なるようですが、何らかの理由で書き直しが完了していません。Integration.build
ファイルは正しい構成 (ファイルでコード コントラクトが有効になっている) を構築し、他.csproj
のすべては正しく見えますが、正しく動作しません。
だから、私は疑問に思っています: Visual Studio 2010 の方法で MSBuild を実行するにはどうすればよいですccrewrite
か? 適切なコード コントラクトの書き換えを行う MSBuild ファイルがどのように見えるかを示す完璧な例はありますか?.rewritten
.pdb.original