Visual Studio Multi-Project Templates

Идея

В одной из прошлых статей я рассказывал уже о том, как создавать шаблоны проектов. Там я рассказывал о нюансах создания шаблонов в VS2008 и VS2010, как настроить данные, файлы и все такое прочее. Это конечно хорошо, но всегда хочется большего.

Если студия может создавать сразу несколько проектов в для одного решения, то значит и мы должны по идее суметь такое же сделать. А уж применений я думаю у нас надется. Можно сразу сделать заготовки для домена, инфраструктуры, сервисов, интерфейса, все это сразу настроить на взаимосвязь и создавать одним щелчком мыши (ну или сколько там надо, чтобы создать один проект).

Итак, будем делать мульти-проектовое (проектное?) решение.

Подгодовка

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

Мульти-проект будет состоять из WinForms и Dll. В целом абсолютно без разницы какие проекты вы будете использовать. Даже неважно чтобы они были все на одном языке программирования!

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

1. открываем File > Export Templates

2. Выбираем проект, жмем «Next»

3. Заполняем необходимые поля и жмем «Finish»

После этого откроется папке с архивом, где будет шаблон проекта. Пока оставим все как есть и проделаем шаги 1-3 для всех оставшихся проектов, которые надо будет добавить в мульти-проект.

Создание

Когда у нас будут экспортированы все проекты, открываем папку с ними и разархивируем их. Должно получится примерно как на картинке.

Открываем каждую папку и переименовываем файл MyTemplate.vstemplate во что-нибудь более аутентичное. Хотя в целом этот шаг не обязательный.

Следующим шагом будет создание файла, который скажет студии, что все эти проекты не сами по себе, а команда!

Создаем рядом с папками новый текстовый файл, переименовываем его так, чтобы расширение было vstemplate.

Открываем вновь созданный файл в любом редакторе и пишем следующее

В самом начале жирным выделен текст (имя проекта), который будет показываться в студии при создании проекта, по которому вы узнаете что это ваше. Далее идет описание проекта, опционально.

Следующие выделенные пункты говорят о том, где расположены включенные в мульти-проект подпроекты. Я думаю понятно, что если бы у вас было 3 подпроекта, то часть

Надо было бы повторить три раза

После того как файл отредактирован и сохранен, необходимо этот файл и папки добавить в новый zip архив и поместить в папку C:\%Documents%\Visual Studio 2010\Templates\Project templates (по умолчанию).

Открываем студию, создаем новый проект, выбираем корень дерева Visual C# и видим наш проект в списке доступных шаблонов.

Дополнительные улучшения

Можно создавать проекты распределенные по папкам. Для этого необходимо обернуть ProjectTemplateLink в секцию SolutionFolder. Например:

В самом проекте папки создаются несколько иначе. Откройте vstemplate для проекта и там можно дописать следующее:

И самое главное на данный момент, как создавать ссылки на другие проекты. К сожалению при экспорте проекта, не сохраняются ссылки на другие проекты из текущего решения. Что, по большому счету, понятно, так как экспортируется штатными средствами только один проект в stand-alone виде. Это легко поправить.

Открываем проект, откуда делали заготовки, создаем там все необходимые ссылки между проектами. Теперь открываем файлы проектов в любом текстовом редакторе и ищем узлы с именем ProjectReference. Все это должно быть похоже на

Копируем всю ItemGroup и вставляем в csproj файл в папке экспорта для нужного нам проекта. Все снова упаковываем в архив и помещаем в папку с шаблонами проектов. Теперь при создании нового проекта у вас будут все ссылки на внутренние проекты. Всё!

Интересных проектов вам!

Hard’n’heavy!

Оставить комментарий