Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2009, 15:10   #1
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию Автоматизация сборки C# Project

Мне при каждом билде нужно выполнять большое количество действий (скомпилировать в режиме Release, скопировать .exe, скомпилировать в другом режиме, переименовать .exe, скопировать его).

Возможностей Post-build event command line мне явно не хватает (хотя бы потому что эти настройки общие для всех режимов). Поэтому я хочу сделать .bat с компиляцией из консоли. Можно ли из консоли скомпилировать проект с настройками из файла .csproj (чтобы не задавать параметры вручную)?

Может, есть еще какие-нибудь возможности для автоматизации сборки?
ds.Dante вне форума Ответить с цитированием
Старый 12.10.2009, 18:04   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Почитай про Nant.
Hollander вне форума Ответить с цитированием
Старый 13.10.2009, 18:55   #3
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Спасибо за совет. Пока времени на это нет, а потом, может, отчет напишу.
ds.Dante вне форума Ответить с цитированием
Старый 14.10.2011, 11:07   #4
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Итак, через два года я таки нашёл время автоматизировать сборку своих проектов.

Начал с простого: MSBuild + cmd. Получился такой батник для сборки и запуска проекта:
Код:
del log.txt


rem ********** Info
echo MLDip build and run >>log.txt
date /t >>log.txt
time /t >>log.txt
echo. >>log.txt


rem ********** Build
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /p:Configuration=Release /v:minimal /clp:Summary "D:\MLDip 4\MLDip\MLDip.sln" >>log.txt


rem ********** Clear old
deltree "D:\MLDip 4\Release" >>log.txt

rem ********** Make folder structure
md "D:\MLDip 4\Release" >>log.txt
md "D:\MLDip 4\Release\Plugins" >>log.txt
md "D:\MLDip 4\Release\ru-RU" >>log.txt
md "D:\MLDip 4\Release\Screens" >>log.txt

rem ********** Copy binaries from Release
copy "D:\MLDip 4\MLDip\MLDip\bin\Release\MLDip.exe" "D:\MLDip 4\Release\" >>log.txt
copy "D:\MLDip 4\MLDip\MLDip\bin\Release\Plugins\*.dll" "D:\MLDip 4\Release\Plugins\" >>log.txt
copy "D:\MLDip 4\MLDip\MLDip\bin\Release\ru-RU\*.dll" "D:\MLDip 4\Release\ru-RU\" >>log.txt

rem ********** Copy settings and miscellaneous from Debug
copy "D:\MLDip 4\MLDip\MLDip\bin\Debug\MLDip.vshost.ini" "D:\MLDip 4\Release\MLDip.ini" >>log.txt
copy "D:\MLDip 4\MLDip\MLDip\bin\Debug\Plugins\*.ini" "D:\MLDip 4\Release\Plugins\" >>log.txt
copy "D:\MLDip 4\MLDip\MLDip\bin\Debug\Screens\*.mlscreen" "D:\MLDip 4\Release\Screens\" >>log.txt
xcopy /y /e "D:\MLDip 4\MLDip\MLDip\bin\Debug\References" "D:\MLDip 4\Release\References\" >>log.txt

rem ********** Copy other files
copy "D:\MLDip 4\Install\readme.txt" "D:\MLDip 4\Release\" >>log.txt


rem ********** Start program
cd "D:\MLDip 4\Release"
start MLDip.exe
1) Удаляем старый log.txt
2) Записываем в него "MLDip build and run", текущую дату и время
3) Собираем проект в режиме Release
4) Удаляем старую папку с релизом
5) Создаём необходимые папки
6) Копируем бинарники из Release
7) Копируем файлы настроек из Debug (так как он юзается чаще, и настройки там обычно новее)
8) Копируем readme.txt
9) Запускаем программу

Дла автоматической сборки дистрибутива в Smart Install Maker у меня похожий батник, отличающийся только концовкой:
Код:
del log.txt


rem ********** Info
echo MLDip build setup >>log.txt
date /t >>log.txt
time /t >>log.txt
echo. >>log.txt


rem ********** Build
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /p:Configuration=Release /v:minimal /clp:Summary "D:\MLDip 4\MLDip\MLDip.sln" >>log.txt


rem ********** Clear old
deltree "D:\MLDip 4\Release" >>log.txt

rem ********** Make folder structure
md "D:\MLDip 4\Release" >>log.txt
md "D:\MLDip 4\Release\Plugins" >>log.txt
md "D:\MLDip 4\Release\ru-RU" >>log.txt
md "D:\MLDip 4\Release\Screens" >>log.txt

rem ********** Copy binaries from Release
copy "D:\MLDip 4\MLDip\MLDip\bin\Release\MLDip.exe" "D:\MLDip 4\Release\" >>log.txt
copy "D:\MLDip 4\MLDip\MLDip\bin\Release\Plugins\*.dll" "D:\MLDip 4\Release\Plugins\" >>log.txt
copy "D:\MLDip 4\MLDip\MLDip\bin\Release\ru-RU\*.dll" "D:\MLDip 4\Release\ru-RU\" >>log.txt

rem ********** Copy settings and miscellaneous from Debug
copy "D:\MLDip 4\MLDip\MLDip\bin\Debug\MLDip.vshost.ini" "D:\MLDip 4\Release\MLDip.ini" >>log.txt
copy "D:\MLDip 4\MLDip\MLDip\bin\Debug\Plugins\*.ini" "D:\MLDip 4\Release\Plugins\" >>log.txt
copy "D:\MLDip 4\MLDip\MLDip\bin\Debug\Screens\*.mlscreen" "D:\MLDip 4\Release\Screens\" >>log.txt
xcopy /y /e "D:\MLDip 4\MLDip\MLDip\bin\Debug\References" "D:\MLDip 4\Release\References\" >>log.txt

rem ********** Copy other files
copy "D:\MLDip 4\Install\readme.txt" "D:\MLDip 4\Release\" >>log.txt


rem ********** Make setup
md Install >>log.txt
deltree Install\AutoRelease >>log.txt
md Install\AutoRelease >>log.txt
"C:\Program Files\Smart Install Maker\sim.exe" /build "D:\MLDip 4\Install\MLDip 4.0 alpha.smm" >>log.txt
Потом я попробовал использовать NAnt, но, увидев там такой же главный минус как у батников - невозможность как-то автоматизировать создание структуры папок и выборочного копирования нужных файлов из разных мест, я пришёл к выводу, что первого варианта мне вполне достаточно.
ds.Dante вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получаю сообщение "This file is used by the project manager only and should be treated like the project f fs444 C++ Builder 1 22.09.2009 11:05
Как уменьшить размер сборки? Д'якон Общие вопросы Delphi 12 03.09.2009 11:18
Сборки Windows Bearw08 Windows 20 30.03.2009 00:38
Программа планирования завода по сборки jungo Софт 1 29.07.2008 14:01