【问题标题】:Visual Studio - Intercept and change path on creation for solutions and projectsVisual Studio - 拦截和更改解决方案和项目的创建路径
【发布时间】:2009-04-14 14:05:42
【问题描述】:

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

换句话说。

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

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

我应该补充一点,这个过程是由用户选择自定义模板触发的。如果使用自定义模板没有答案,我会切换到 VS 插件。

-斯科特

【问题讨论】:

  • 我不知道有什么方法可以做到这一点,但我会说如果你真的成功了,你会惹恼很多开发者。我认识的大多数开发人员都非常注重他们喜欢如何组织他们的代码,而且他们都不相同。 TFS 不支持不同的工作目录吗?
  • 是的 TFS 支持不同的工作目录。问题来自于引用外部项目、260 路径字符限制等......自动构建引入的各种问题。如果不同的开发者设置不同的方式,它可能会破坏(将)破坏持续构建。

标签: c# visual-studio templates automation customization


【解决方案1】:

您应该查看Guidance Automation Toolkit。除其他外,它还允许您创建解决方案模板,让您可以执行您提到的所有操作等等。您甚至可以向用户提供一个向导 UI,询问您可以使用哪些选项自定义解决方案,包括哪些项目和文件引用。您可以设置各种项目设置;执行标准等。

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

GAT 是使用 Visual Studio 可扩展性真正完成工作的好方法。

【讨论】:

    【解决方案2】:

    在进一步研究之后,我发现 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(解决方案名称);

    感谢大家的建议。

    【讨论】:

    • 仅供参考,这正是 GAT 可以做的事情,但它可以做的更多。用户可以运行提示输入解决方案名称、项目、团队或其他内容的“配方”,并且可以在源代码树中的正确位置构建解决方案,并使用正确的引用等。
    【解决方案3】:

    我不确定您在做什么,但使用项目模板可以实现类似的操作。不确定这是否适用于您的情况。

    添加:类似这样的:

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

    【讨论】:

    • 我修改了我的帖子以获得更多细节。我正在使用一个自定义模板,该模板使用一个实现 IWizard 的自定义类。我可以用 IWizard 做一些其他的事情,只是不确定我可以更改保存目录。
    • 模板描述符 XML 指定模板文件应复制到的所有文件夹。为什么不直接添加呢?
    • 因为它控制了项目中的文件夹结构。我需要在解决方案级别更改文件夹结构。这是一个多项目模板。
    • 也许您可以让 Studio 不创建默认的 .SLN 文件,而是自己创建一个,就像项目项一样?
    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 2018-05-07
    相关资源
    最近更新 更多