Visual Studio - перехватывать и изменять путь при создании решений и проектов - PullRequest
1 голос
/ 14 апреля 2009

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

Другими словами.

пользователь дает C: / Projects / App1 на экране создания нового проекта. решение и проекты фактически хранятся в C: / Projects / App1 / trunk / source / App1

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

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

-Скотт

Ответы [ 3 ]

1 голос
/ 14 апреля 2009

Вы должны взглянуть на Инструментарий автоматизации навигации . Помимо прочего, он позволяет вам создавать шаблоны решений, которые позволят вам делать все, что вы упомянули, и многое другое. Вы могли бы даже представить пользовательский интерфейс мастера, запрашивая параметры, с помощью которых вы можете настроить решение в зависимости от того, какие ссылки на проекты и файлы следует включить. Вы можете настроить параметры проекта всех видов; применять стандарты и т. д.

Вы можете увидеть сложный пример GAT в Service Factory . Существует также форум GAT на http://social.msdn.microsoft.com/forums/en-US/vsgatk/threads/.

GAT - отличный способ использовать расширяемость Visual Studio, чтобы действительно добиться цели.

1 голос
/ 15 апреля 2009

После более подробного изучения я обнаружил, что интерфейс IWizard даже не вызывается до тех пор, пока структура папок для решения (не для проектов) уже создана. Поскольку мне нужно добиться прогресса, я решил пойти дальше и переключить его на надстройку для Visual Studio вместо чисто шаблонного процесса.

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

System.Type vsType = System.Type.GetTypeFromProgID ("VisualStudio.DTE.9.0"); DTE2 vs = (DTE2) System.Activator.CreateInstance (vsType, true);

soln = (Solution2) vs.Solution;

soln.Create (PathProjectRoot, SolutionName);

soln.SaveAs (SolutionName);

Спасибо всем за предложения.

0 голосов
/ 14 апреля 2009

Я не уверен, что вы делаете, но что-то подобное возможно с шаблонами проектов. Не уверен, что в вашем случае это применимо.

Добавлено: Примерно так:

<TemplateContent>
    <Project>
        <Folder>
            <Folder>
                <ProjectItem></ProjectItem
            </Folder>
        </Folder>
    </Project>
</TemplateContent>
...