Visual Studio 多项目模板重命名命名空间和项目名称

Posted

技术标签:

【中文标题】Visual Studio 多项目模板重命名命名空间和项目名称【英文标题】:Visual Studio multi-project templates rename namespaces and project names 【发布时间】:2011-07-15 11:56:45 【问题描述】:

我已经成功创建了一个多项目解决方案模板。然而,我想做的是用解决方案的名称重命名每个项目的开头。

所以我的项目:

ProjectOne.A ProjectTwo.B

将改名为

解决方案名称.A 解决方案名称.B

其中SolutionName 是用户创建项目时的名称。

我已阅读以下文章:

http://msdn.microsoft.com/en-us/library/ms185308.aspx http://msdn.microsoft.com/en-us/library/ms185311.aspx http://msdn.microsoft.com/en-us/library/ms247063.aspx

但似乎没有人回答我的具体情况。

【问题讨论】:

@Adron - 你能发布确切的链接吗?我不想寻找合适的文章。 我还没有测试你的建议,但我相信它基于 Myles 的评论是有效的。 【参考方案1】:

如果您的主要.vstemplate(解决方案的)类似于下面的示例, 您可以使用向导字典中定义的变量将项目文件夹和 .csproj 重命名为您想要的任何名称。

<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
    <TemplateData>
        <Name>My Web Server Solution with DAL</Name>
        <Description>Creates Projects for Web Server DAL and adds them to a new or existing solution</Description>
        <Icon></Icon>
        <ProjectType>CSharp</ProjectType>
        <ProjectSubType>My</ProjectSubType>
        <DefaultName>WebServer</DefaultName>
        <NumberOfParentCategoriesToRollUp>2</NumberOfParentCategoriesToRollUp>
        <TemplateGroupID>My</TemplateGroupID>
        <TemplateID>My.Dal.Web.Template</TemplateID>
    </TemplateData>
    <TemplateContent>
        <ProjectCollection>
            <ProjectTemplateLink ProjectName="$ModelProjectName$">
                Children\Model\ProjectTemplate.vstemplate
            </ProjectTemplateLink>
            <ProjectTemplateLink ProjectName="$SharedModelContractsProjectName$">
                Children\SharedModelContracts\ProjectTemplate.vstemplate
            </ProjectTemplateLink>
            <ProjectTemplateLink ProjectName="$RepositoryInterfacesProjectName$">
                Children\RepositoryInterfaces\ProjectTemplate.vstemplate
            </ProjectTemplateLink>
            <ProjectTemplateLink ProjectName="$RepositoryImplementationProjectName$">
                Children\RepositoryImplementation\ProjectTemplate.vstemplate
            </ProjectTemplateLink>
            <ProjectTemplateLink ProjectName="$RepositoryExtensionsProjectName$">
                Children\RepositoryExtensions\ProjectTemplate.vstemplate
            </ProjectTemplateLink>
        </ProjectCollection>
    </TemplateContent>
    <WizardExtension>
        <Assembly>My.WebServerDalExtension.Wizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5c93c79b0feae916</Assembly>
        <FullClassName>My.WebServerDalExtension.Wizard.Controller</FullClassName>
    </WizardExtension>
</VSTemplate>

使用类似的更改添加 .vstemplates(项目的 .vstemplates)来重命名 .csproj 文件。

【讨论】:

其中一些项目相互引用,但 $safeitemname$$safeprojectname$ 占位符没有被替换或替换为错误的值。关于如何一起引用项目的任何想法? 是的,从您的向导中读取所有项目名称。在向导中定义每个项目引用的使用变量。请参阅此示例:vsix.codeplex.com 是的,看起来像在.csproj 参考部分添加一个自定义变量完全没有任何作用。 .vstemplate 文件必须启用该 .csproj 文件的变量替换。 我们如何将自定义参数传递给子模板?

以上是关于Visual Studio 多项目模板重命名命名空间和项目名称的主要内容,如果未能解决你的问题,请参考以下文章

重命名 Visual Studio 2008 MFC 项目后出现 R6034 运行时错误

如何在 Visual Studio (C++) 项目向导中添加/重命名配置?

如何在 Visual Studio 2008 中重命名现有解决方案和项目? [复制]

重命名项目路径后如何将现有项目添加到 Visual Studio 2012

如何在 Visual Studio 2003 中重命名 C++ 源文件?

visual studio 2010怎么新建c语言文件