2

I have reviewed a lot of good information regarding Visual Studio Multi-Project templates, including:

  • MSDN References for Project Element, & Project Template Wizards
  • Tony Sneed blog - Build a multi-project Visual Studio template

My question is similar to the following question on StackOverflow: Visual Studio Multi-Project Templates rename namespaces and project names

Following is the resulting directory structure after creating a new multi-project template using "MyService" as the name - this is as expected:

 - MyService
   - Actor
   - Api
   - Client
   - Interfaces

Within the "Actor" Directory, I want the project file to be MyService.Actor.csproj and I end up with Actor.csproj. Following are excerpts from the Main Template and Actor Template... (BTW I use a Wizard to pass the service name and other files are named as expected)

I expected TargetFileName=$saferootprojectname$.Actor.csproj in the child template to result in the name of the project file being MyService.Actor.csproj - but it is actor.csproj and similarly for all other project files api.csproj, client.csproj and interfaces.csproj (without MyService prefix)

Main Template

<ProjectCollection>
    <SolutionFolder Name="Dependencies">
    </SolutionFolder>   
    <ProjectTemplateLink ProjectName="Actor">
        Actor\Actor.vstemplate
    </ProjectTemplateLink>
    <ProjectTemplateLink ProjectName="Api">
        Api\Api.vstemplate
    </ProjectTemplateLink>
    <ProjectTemplateLink ProjectName="Client">
        Client\Client.vstemplate
    </ProjectTemplateLink>
    <ProjectTemplateLink ProjectName="Interfaces">
        Interfaces\Interfaces.vstemplate
    </ProjectTemplateLink>
</ProjectCollection>

Child Template

<Project TargetFileName="$saferootprojectname$.Actor.csproj"   File="MyService.Actor.csproj" ReplaceParameters="true">
    <ProjectItem ReplaceParameters="true" TargetFileName="App.config">App.config</ProjectItem>
  <Folder Name="PackageRoot" TargetFolderName="PackageRoot">
    <Folder Name="Config" TargetFolderName="Config">
      <ProjectItem ReplaceParameters="true" TargetFileName="Settings.xml">Settings.xml</ProjectItem>
    </Folder>
    <ProjectItem ReplaceParameters="true" TargetFileName="ServiceManifest.xml">ServiceManifest.xml</ProjectItem>
  </Folder>
  <ProjectItem ReplaceParameters="true" TargetFileName="packages.config">packages.config</ProjectItem>
  <ProjectItem ReplaceParameters="true" TargetFileName="Ping.cs">Ping.cs</ProjectItem>
  <ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem>
  <Folder Name="Properties" TargetFolderName="Properties">
    <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
  </Folder>
  <ProjectItem ReplaceParameters="true" TargetFileName="ServiceEventSource.cs">ServiceEventSource.cs</ProjectItem>
</Project>

Visual Studio 2015 Update 3 is being used.

Community
  • 1
  • 1
  • 2018 VS2017 Enterprise - using zip based multi-project templates; we have same problem. we want folder names to be small while csproj names to be full like namespaces - this also helps avoid TFS path errors in windows machines – hB0 Jun 29 '18 at 11:23

0 Answers0