1

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

换句话说。

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

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

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

-斯科特

4

3 回答 3

1

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

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

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

于 2009-04-14T14:22:44.160 回答
1

After looking into it some more, I discovered that the IWizard interface is not even called until after the folder structure for the solution (not the projects) has already been created. Since I need to make progress, I've decided to go ahead and switch it to an Add-In to Visual Studio instead of a purely templated process.

I've already had much more luck creating the solution programmatically then adding in the templated projects to my solution. I was able to get around the problem. I've snipped some code but this gives the basic idea.

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);

Thanks everyone for the suggestions.

于 2009-04-14T20:15:53.403 回答
0

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

补充:像这样的东西:

<TemplateContent>
    <Project>
        <Folder>
            <Folder>
                <ProjectItem></ProjectItem
            </Folder>
        </Folder>
    </Project>
</TemplateContent>
于 2009-04-14T14:15:19.980 回答