次の 2 つのプロジェクトを含むソリューションのマルチプロジェクト テンプレートを作成できるようにしたいと考えています (インターフェイスにはビジネス レイヤーへの参照が含まれている必要があります)。
<proj_name>.interface
<proj_name>.business
.
通常、以下を含む を含めることができます$safeprojectname$
。
[新しいプロジェクト] ダイアログ ボックスでユーザーが指定した名前
ただし、記事で指摘されているように、複数プロジェクトのビジュアル スタジオ テンプレートを構築する
ここでの問題は、各子テンプレート内で$safeprojectname$が現在のプロジェクト名を表していることです。親テンプレートからルート$safeprojectname$を渡す方法が必要です。
この SO question VS 2010 Multi-Project Template: Inter-Project Referencesで提案されているソリューションを を使用して実装しようとしてCustomParameters
いますが、問題が発生しています。
私の圧縮されたテンプレート ディレクトリは次のようになります。
- MultiTemplate.vstemplate
- インターフェース
- InterfaceTemplate.vstemplate
- MyTemplate.Interface.csproj
- 仕事
- BusinessTemplate.vstemplate
- MyTemplate.Business.csproj
Entire Directoryをダウンロードできますが、一部の抜粋を次に示します。
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>
Interface\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$
と、文字列の一部が置き換えられません。代わりに、それは同じままです。
Q :この情報をマルチ プロジェクト テンプレートから各子テンプレートに適切に渡すにはどうすればよいですか?
<name>
トークンの置換は機能しないように見えるため、タグ値を置換する方法を理解できればボーナスポイントです。