Я начал использовать 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
файлами, которые засоряют выходной каталог.
Что делает работа, сначала создавая решение в Visual Studio 2010, комментируя строку с 3 по 7 в пакетном файле и запуская ее снова. Затем я заканчиваю правильно переписанными сборками и не .pdb.original
, ни .rewritten
.
Что я понял из этого, так это то, что Visual Studio 2010 каким-то образом запускает переписывающий код контракта, поэтому результирующие сборки из сборки Visual Studio 2010 повторно используются вызовом MSBuild из командной строки, так что мой пакетный скрипт в основном это просто копирование файлов в каталог build
. Другими словами, это бесполезно.
Я прочитал this, но проблема Джона, кажется, отличается от моего, так как ccrewrite
очевидно, делает что-то , но это просто не завершая перезапись по какой-либо причине. Файл Integration.build
создает правильную конфигурацию (с кодовыми контрактами, включенными в файлы .csproj
), и все остальное выглядит правильно, это просто не работает должным образом.
Итак, я задаюсь вопросом: Как запустить MSBuild путь Visual Studio 2010, где ccrewrite
делает то, что он должен и не засоряет мой выходной каталог с .rewritten
и .pdb.original
файлов? Есть ли у кого-нибудь прекрасный пример того, как выглядит файл MSBuild, выполняющий надлежащую перестройку кода контракта?