Как я могу использовать MSBuild для экспорта другого проекта в качестве шаблона проекта Visual Studio? - PullRequest
2 голосов
/ 14 сентября 2009

Вот чего я пытаюсь достичь. У меня есть несколько проектов на C # и VB, которые я хочу экспортировать в качестве шаблонных проектов в рамках моего автоматизированного процесса сборки. Экспорт шаблонов легко сделать в интерактивном режиме, но я должен сделать это как часть моего автоматизированного процесса сборки. Кроме того, проекты шаблонов должны быть построены до их экспорта, чтобы они гарантированно компилировались, когда конечный пользователь использует шаблон. [Я знаю, что проекты шаблонов обычно не компилируются, но я решил эту проблему, поэтому для целей этого вопроса мы можем принять это как прочтенное, что проекты шаблонов будут успешно скомпилированы].

Я планирую использовать Задачи сообщества MSBuild, чтобы сжать мой окончательный экспортированный проект шаблона. Однако я не могу поместить это действие в сам шаблонный проект, потому что это действие затем будет экспортировано как часть шаблона, а это не то, чего я хочу.

Так что я подумал, что я мог бы создать новый отдельный проект MSBuild, который проверяет другие проекты шаблонов, обнаруживает, какие файлы в них находятся, добавляет предопределенный файл MyTemplate.vstemplate, архивирует эти файлы и "walla", есть мой экспортированный шаблон.

Пока все хорошо. Единственная проблема в том, что я полный нуб MSBuild и у меня проблемы с началом работы. Пожалуйста, я буду признателен за любые предложения о том, как этого добиться.

Я с болью осознаю, что это почти вопрос типа «делай мою работу для меня», моя защита в том, что (а) это на самом деле не моя работа и (б) я пытался сделать домашнее задание MSBuild и вдохновение просто не течет.

1 Ответ

2 голосов
/ 11 октября 2009

Если не считать "делаю это для вас" (), как на счет того, чтобы показать вам, как это делается в другом месте? Я сделал то же самое сам вон там:

http://github.com/AArnott/dotnetopenid/commits

В частности, веб-проект projecttemplates / WebFormsRelyingParty преобразуется в шаблон проекта с помощью цели BuildProjectTemplates файла build.proj.

Моя стратегия - иметь обычный (компилируемый) веб-проект на C #, над которым я работаю. У меня также есть файл .vstemplate в этой папке, который не добавлен в проект, но есть где-то, чтобы я мог вносить изменения. Затем во время моей сборки MSBuild собирает веб-сайт и копирует результат (исключая большинство продуктов сборки веб-сайта) во временное местоположение. Во время копирования у меня есть пользовательская задача MSBuild, которая заменяет имя моего веб-приложения на $ safeprojectname $ во всех исходных файлах, поскольку именно это делает создатель шаблона проекта VS. Он также копирует значок для использования в шаблоне. Наконец, он архивирует его и помещает файл .zip в мою выходную директорию.

...