Я занимаюсь созданием стартерки MVC для работы, и у меня возникают проблемы с созданием многопроектного шаблона, который не требует массовой модификации после создания.Visual Studio 2012 несколько шаблонов проектов с взаимозависимостями
Что у меня есть 4 проекта, которые имеют некоторую зависимость друг от друга:
- StarterKit.Common - нет зависимостей
- StarterKit.DAL - зависимостей для StarterKit.Common
- StarterKit.BL - зависимость в StarterKit.Common и StarterKit.DAL StarterKit.Web - зависимость от других трех
Я пытался идти маршрут экспорта каждого PROJEC t с помощью мастера экспорта шаблонов, создающего файл .vstemplate с корневым файлом и все это застегнув. Хотя это работает (я могу создать новое решение на основе этого шаблона), у него есть серьезные проблемы.
Во-первых, экспорт заменяет все пространство имен каждого проекта с $ safeprojectname $, т.е. StarterKit.DAL => $ safeprojectname $, StarterKit.Web => $ safeprojectname $ и т.д.
Это означает, что, когда новый (назовем его XXX), что ранее было в пространстве имен StarterKit.Web теперь заканчивается в пространстве имен XXX и ранее было StarterKit.BL также заканчивается в пространстве имен XXX!
Это, очевидно, не сработает.
Во-вторых, некоторые операторы использования не заменяются вообще. Например, using StarterKit.Common;
не заменен в веб-проекте, потому что у него нет правильного пространства имен (это StarterKit.Web).
В-третьих, у меня есть некоторые сценарии .tt, содержащие операторы, которые я хочу заменить, но даже если я установил ReplaceParameters="true"
в проекте, они вообще не затрагиваются.
Я также изучил создание проекта VSIX, но, честно говоря, я не вижу, как я могу это использовать. Для меня это выглядит в основном как утилита zip, которая создает .vstemplate для вас и переименовывает .zip в .vsix для меня.
Что мне нужно сделать, это:
- Пакет все проекты в одном файле развертывания, доступные в качестве шаблона «Новый проект» в VS
- При создании новыйПроект, замените все «StarterKit» имена пространств имен в файлах .csproj, .cs, .cshtml и .tt с любым пользователем, выбранным в качестве имени решения.
- Простейший процесс, при котором я могу легко обновлять шаблоны всякий раз, когда базовые проекты меняются (файлы добавляются/удаляются, переименован, изменен контент и т. д.)
Кто-нибудь есть идеи, если это возможно?
Очень хорошее решение. Хотя на этот раз я не буду использовать его (сценарий PS хорошо работает для наших целей), я буду отмечать его как ответ, поскольку это, вероятно, единственное реальное решение исходной проблемы. – peter3