2016-07-27 2 views
0

Je tente de créer un modèle pour un service qui est très couramment utilisé. Cependant, chaque fois que j'essaie de construire, je reçois une erreur:Les modèles personnalisés VS avec l'assistant ne seront pas compilés

There was a problem processing the ItemTemplate "MyProjectTemplate.vstemplate." >Length cannot be less than zero. Parameter name: length."

Et c'est tout. Mon fichier de modèle racine est un ProjectGroup qui fait référence à d'autres modèles de projet. Voici le fichier .vstemplate racine:

<VSTemplate Version="3.0.0" Type="ProjectGroup" 
    xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"> 
    <TemplateData> 
    <Name>Api Template Test</Name> 
    <Description>Api Template Test</Description> 
    <Icon>Icon.ico</Icon> 
    <ProjectType>CSharp</ProjectType> 
    <ProjectSubType></ProjectSubType> 
    <SortOrder>1000</SortOrder> 
    <CreateNewFolder>true</CreateNewFolder> 
    </TemplateData> 
    <TemplateContent> 
    <ProjectCollection> 
     <SolutionFolder Name="_Database"></SolutionFolder> 
     <SolutionFolder Name="_Tests"></SolutionFolder> 
     <SolutionFolder Name="Service"> 
     <ProjectTemplateLink ProjectName="$projectname$.Service"> 
      Service/Services.vstemplate 
     </ProjectTemplateLink> 
     </SolutionFolder> 
     <SolutionFolder Name="ServiceDefinition"> 
     <ProjectTemplateLink ProjectName="$projectname$.ServiceDefinitions"> 
      ServiceDefinitions\ServiceDefinitions.vstemplate 
     </ProjectTemplateLink> 
     <SolutionFolder Name="Proxy"> 
      <ProjectTemplateLink ProjectName="$projectname$.ServiceProxies"> 
      ServiceProxies/ServiceProxies.vstemplate 
      </ProjectTemplateLink> 
     </SolutionFolder> 
     </SolutionFolder> 
     <SolutionFolder Name="WebApi"> 
     <ProjectTemplateLink ProjectName="$projectname$.WebApi"> 
      WebApi/WebApi.vstemplate 
     </ProjectTemplateLink> 
     </SolutionFolder> 
    </ProjectCollection> 
    </TemplateContent> 
    <WizardExtension> 
    <Assembly>MyProjectWizard, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=<*token*></Assembly> 
    <FullClassName>MyProjectWizard.WizardImplementation</FullClassName> 
    </WizardExtension> 
</VSTemplate> 

Qu'est-ce que je fais mal ici? Le paramètre « longueur » n'existe même pas dans ma solution ...

Répondre

0

Quand je suis tombé sur cette erreur, il est dû à ce qui est dans les <ProjectCollection></ProjectCollection>

Dans mon cas, j'avais initialement ProjectItem et ProjectTemplateLink, mais ces deux ne peuvent pas être mélangés. Ensuite, j'ai changé pour une multitude de balises SolutionFolder, mais j'ai eu la même erreur. Ce que j'ai trouvé c'est que j'ai eu le chemin en utilisant le mauvais style. Dans votre code, rappelez-vous qu'il s'agit d'un chemin de fichier, utilisez back-slash. (J'ai fait facepalmed une fois que j'ai trouvé ceci dans mon projet)

<ProjectCollection> 
    <SolutionFolder Name="_Database"></SolutionFolder> 
    <SolutionFolder Name="_Tests"></SolutionFolder> 
    <SolutionFolder Name="Service"> 
    <ProjectTemplateLink ProjectName="$projectname$.Service"> 
     Service\Services.vstemplate 
    </ProjectTemplateLink> 
    </SolutionFolder> 
    <SolutionFolder Name="ServiceDefinition"> 
    <ProjectTemplateLink ProjectName="$projectname$.ServiceDefinitions"> 
     ServiceDefinitions\ServiceDefinitions.vstemplate 
    </ProjectTemplateLink> 
    <SolutionFolder Name="Proxy"> 
     <ProjectTemplateLink ProjectName="$projectname$.ServiceProxies"> 
     ServiceProxies\ServiceProxies.vstemplate 
     </ProjectTemplateLink> 
    </SolutionFolder> 
    </SolutionFolder> 
    <SolutionFolder Name="WebApi"> 
    <ProjectTemplateLink ProjectName="$projectname$.WebApi"> 
     WebApi\WebApi.vstemplate 
    </ProjectTemplateLink> 
    </SolutionFolder> 
</ProjectCollection>