Я начал использовать Кодовые контракты во всем новом коде, который я пишу, например, в библиотеке фреймворка, которую я создаю, чтобы помочь при начальной загрузке IoC , O / RM и т. Д. В приложении ASP.NET MVC. Я написал простой скрипт сборки для этой библиотеки фреймворков, который выглядит следующим образом:
@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
), а все остальное выглядит правильно, просто не работает должным образом.
Итак, мне интересно: как мне запустить MSBuild так, как Visual Studio 2010 - это то, где ccrewrite
делает то, что должен, и не засоряет мой выходной каталог файлами .rewritten
и .pdb.original
? У кого-нибудь есть прекрасный пример того, как выглядит файл MSBuild, выполняющий правильное переписывание кодовых контрактов?