Visual Studio - 拦截和更改解决方案和项目创建的路径

时间:2009-04-14 14:05:42

标签: c# visual-studio templates automation customization

我正在开发一个自动化流程来构建一个基础应用程序,以包含公共库和项目,将所有内容都检查到源代码控制中,并为解决方案设置基本构建。我解决了大多数问题,除了一个。是否有可能拦截用户给定解决方案和项目的路径并改变该路径?

换句话说。

用户在创建新项目屏幕上提供C:/ Projects / App1。 解决方案和项目实际存储在C:/ Projects / App1 / trunk / source / App1

我想更改路径以方便我们为连续构建设置TFS。除了这个问题,我已经解决了大多数其他问题,看起来这应该是最简单的。我试着看看我是否可以在我的IWizard课程中更改它,但到目前为止,没有运气。任何建议都将不胜感激。

我应该补充一点,用户选择自定义模板会触发此过程。如果使用自定义模板没有答案,我将切换到VS加载项。

-Scott

3 个答案:

答案 0 :(得分:1)

你看看Guidance Automation Toolkit。除此之外,它还允许您创建解决方案模板,使您可以执行所有提及的操作,等等。您甚至可以向用户提供向导UI,询问可以根据要包含的项目和文件引用自定义解决方案的选项。您可以设置各种项目设置;执行标准等。

您可以在Service Factory中看到一个复杂的GAT示例。 http://social.msdn.microsoft.com/forums/en-US/vsgatk/threads/还有一个GAT论坛。

GAT是使用Visual Studio Extensibility真正完成任务的好方法。

答案 1 :(得分:1)

在进行了一些调查之后,我发现直到已经创建了解决方案(而不是项目)的文件夹结构之后才会调用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(解决方案名称);

感谢大家的建议。

答案 2 :(得分:0)

我不确定你在做什么,但项目模板可以做到这一点。不确定这是否适用于您的情况。

已添加:像这样:

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