Я переписываю наши NAnt сценарии сборки, чтобы сделать их более понятными, простыми и универсальными.
Одним из этапов нашего процесса сборки является упаковка определенных файлов в zip-файл. До того, как мы создали fileset
с большим количеством включенных типов файлов, пытались поймать все, что может быть в проекте. Это иногда вызывало проблемы, когда мы хотели включить в проект нестандартный тип файла.
Я надеялся, что смогу найти способ создания fileset
на основе файлов (а также подмножество файлов), перечисленных в Visual Studio файл проекта (.csproj). Затем я мог бы использовать этот набор файлов в задаче zip
. Я не нашел ничего такого, что делает это автоматически (хотя устаревшая SLiNgshoT
задача в NAntContrib выглядела несколько многообещающе).
Я начал пытаться сделать это вручную, но застрял. У меня есть цель, которая получает проект из решения (используя regex
), а затем пытается получить каждый файл содержимого в проекте, используя xmlpeek
(с запросом XPath /n:Project/n:ItemGroup/n:Content/@Include
). Проблема в том, что xmlpeek
не возвращает каждое значение, только первое. И даже если бы оно возвращало каждое значение, я не уверен, как бы получить его в fileset
отсюда.
Есть ли способ спасти этот путь мышления? Могу ли я выполнить то, что я хочу, с помощью пользовательской задачи NAnt (я бы предпочел, чтобы каждый проект не зависел от пользовательской задачи)? Есть ли какой-нибудь встроенный способ сделать это, которого я не нахожу?
Пожалуйста, не стесняйтесь задавать вопросы в комментариях, если что-то о моей цели или методе неясно.
Спасибо!
ОБНОВЛЕНИЕ: Чтобы уточнить, моя цель во всем этом состоит в том, чтобы сделать весь процесс намного более плавным. Хотя я легко могу добавить все XML-файлы в пакет, часто получаются XML-файлы, которые находятся в одной папке, но на самом деле не являются частью проекта. Когда у меня уже есть список файлов, которые использует проект (даже разделенных между Контентом и другими типами), кажется, стыдно не использовать эту информацию. В конечном счете, никто не должен трогать файл сборки, чтобы изменить то, что входит в пакет. Мне не кажется, что это несбыточная мечта ...