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

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

所以我的项目:

  • ProjectOne.A
  • ProjectTwo.B

将改名为

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

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

我已阅读以下文章:

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

【问题讨论】:

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

标签: visual-studio-2010 templates project-template visual-studio-templates


【解决方案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 文件的变量替换。
  • 我们如何将自定义参数传递给子模板?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 2011-12-23
相关资源
最近更新 更多