我已经在所有新的代码我写,比如在一个框架库我建设,以帮助使用Code Contracts引导IoC,O/RM等开始,在ASP .NET MVC应用程序。我为这个框架库编写了一个简单的构建脚本,如下所示:使用代码契约库代码的MSBuild
@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
和.csproj.FileListAbsolute.txt
文件完全重写,这些文件会丢失输出目录。
什么是工作首先在Visual Studio 2010中构建解决方案,在批处理文件中注释第3行到第7行并再次运行它。然后我最终得到正确重写的程序集,并且没有.pdb.original
也没有.rewritten
文件。
我从中推断出,Visual Studio 2010以某种方式正确触发代码合同重写器,因此Visual Studio 2010构建生成的程序集被命令行MSBuild调用重用,因此我的批处理脚本基本上只是将文件复制到build
目录。换句话说,无用的。
我读过this,但Jon的问题似乎从我的,因为ccrewrite
不同显然是做什么,但它只是没有完成出于某种原因改写。 Integration.build
文件构建正确的配置(在.csproj
文件中启用了代码合同),并且其他所有内容看起来都正确,但它无法正常工作。
所以,我想知道:如何以Visual Studio 2010的方式运行MSBuild ccrewrite
做到了这一点,并且不会用.rewritten
和.pdb.original
文件丢弃我的输出目录?有没有人有一个完美的例子,说明一个MSBuild文件如何进行适当的代码合同重写?