我希望能够为包含以下两个项目的解决方案创建一个多项目模板(其中接口应包含对业务层的引用)。:
<proj_name>.interface
<proj_name>.business
.
通常,您可以包括$safeprojectname$
,它具有:
用户在“新建项目”对话框中提供的名称
但是,正如文章中指出的构建多项目视觉工作室模板
这里的问题是,在每个子模板中,$safeprojectname$代表当前项目名称。需要有一种方法可以从父模板传入根$safeprojectname$ 。
我正在尝试通过 using实施此 SO 问题VS 2010 Multi-Project Template: Inter-Project ReferencesCustomParameters
中建议的解决方案,但遇到了麻烦。
我的压缩模板目录如下所示:
- MultiTemplate.vstemplate
- 界面
- 接口模板.vstemplate
- MyTemplate.Interface.csproj
- 商业
- 业务模板.vstemplate
- MyTemplate.Business.csproj
您可以下载整个目录,但这里有一些精选片段
MultiTemplate.vstemplate
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="ProjectGroup">
<TemplateData><!--Removed for brevity --></TemplateData>
<TemplateContent>
<CustomParameters>
<CustomParameter Name="$SolutionName$" Value="$safeprojectname$"/>
</CustomParameters>
<ProjectCollection>
<ProjectTemplateLink ProjectName="$safeprojectname$.Interface">
Interface\InterfaceTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$safeprojectname$.Business">
Business\BusinessTemplate.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
接口\InterfaceTemplate.vstemplate
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
<TemplateData><!--Removed for brevity --></TemplateData>
<TemplateContent>
<Project TargetFileName="MyTemplate.Interface.csproj"
File="MyTemplate.Interface.csproj"
ReplaceParameters="true">
</Project>
</TemplateContent>
</VSTemplate>
MyTemplate.Interface.csproj
<ItemGroup>
<ProjectReference Include="..\$SolutionName$.Business\$SolutionName$.Business.csproj">
<Project>{E5511F75-5B9C-4816-B991-E09225661CF4}</Project>
<Name>MyTemplate.Business</Name>
</ProjectReference>
</ItemGroup>
问题
当我创建一个新项目时,$SolutionName$
字符串的部分不会被替换。相反,它保持不变。
问:如何正确地将多项目模板中的这些信息传递给每个子模板?
如果您能弄清楚如何替换<name>
标签值,则可以加分,因为令牌替换似乎不起作用。