Хорошо, у меня есть несколько сложная проблема с моей средой сборки, с которой я пытаюсь разобраться.
У меня есть файл решения, который содержит несколько проектов на C #, который создается с помощью сценария NAnt с именем MSBuild, в котором MSBuild передается имя файла решения и путь для копирования двоичных файлов. Это потому, что я хочу, чтобы моя автоматизированная среда сборки (CruiseControl.Net) создала папку, названную после ревизии каждой сборки, - так я могу легко вернуться к предыдущим двоичным файлам по любой причине.
Так что в идеале у меня есть макет папки, как это
c:\build\nightly\rev1
c:\build\nightly\rev2
c:\build\nightly\rev3
...
c:\build\nightly\rev10
etc.
Возникшая проблема заключается в том, что я недавно добавил последнюю версию контейнера Unity IoC в свой проект, проверив ее непосредственно из онлайн-хранилища SVN от MS. Происходит то, что у меня есть проект Silverlight 3, который ссылается на версию Unity Silverlight, но у меня также есть другие проекты (а именно мой проект модульного тестирования), которые ссылаются на стандартную (не Silverlight) версию Unity.
Так что происходит, так как MSBuild сбрасывает все в одну папку, Версия сборки Unity для Silverlight перезаписывает версию, отличную от Silverlight, поскольку они имеют одинаковое имя файла сборки .
Затем, когда CruistControl запускает мои модульные тесты, они терпят неудачу, потому что у них больше нет соответствующих зависимостей (они пытаются загрузить определенную сборку Silverlight Unity, которая, очевидно, не работает).
Итак, что я хочу сделать:
- сохранить мой желаемый выходной каталог
структура (папка \ ревизия)
- Я не хочу редактировать вручную
каждый файл proj у меня есть, как это
подвержен ошибкам при добавлении нового
проекты к решению
В идеале я бы хотел, чтобы MSBuild поместил все в структуру папок, подобную этой:
nightly\revision1\project1
nightly\revision1\project2
nightly\revision1\project3
...
nightly\revision2\project1
nightly\revision2\project2
nightly\revision2\project3
etc
Я не могу изменить проект Unity, чтобы дать ему другое имя файла, потому что он взят из другого репозитория SVN, в который я не могу зафиксировать изменения. Я нашел похожий вопрос, размещенный здесь, и предложенное решение состояло в том, чтобы использовать «главный» файл MSBuild, который использовал пользовательскую задачу для извлечения всех имен файлов проекта из решения, а затем перебрать каждый из них, создавая их. Я попробовал это, но он не строит их в порядке их зависимостей, поэтому он не работает для моего проекта.
Помощь