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

8
我是一名有用的助手,可以为您翻译文本。
我已经成功创建了一个多项目解决方案模板。然而,我想要做的是将每个项目的开头重命名为解决方案的名称。
所以我的项目:
  • ProjectOne.A
  • ProjectTwo.B

将被重命名为

  • SolutionName.A
  • SolutionName.B

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

我已经阅读了以下文章:

但是似乎没有一个能回答我具体的情况。


@Adron - 你能发一下确切的链接吗?我不想去寻找正确的文章。 - Omar
我还没有测试你建议的内容,但我会相信它是有效的,因为Myles的评论。 - Omar
1个回答

11
如果你的主要 .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$占位符未被替换或替换为错误的值。您有什么想法可以让项目相互引用? - Omar
是的,请从您的向导中读取所有项目名称。每个项目引用都使用向导中定义的变量。请参考此示例:http://vsix.codeplex.com/ - Danny Varod
.vstemplate文件必须为.csproj文件启用变量替换。 - Danny Varod
我们如何将自定义参数传递给子模板? - Alex Gordon
@AlexGordon 我几年前就实现了这个,不过我记得它只是正常工作。今天我使用了一个更好的方法,它不使用VS模板机制。 - Danny Varod
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接