0

I am attempting to create a template for a service that is very commonly used. However, every time I try to build I get an error:

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

And that's it. My root template file is a ProjectGroup that is referencing other project templates. Here's the root .vstemplate file:

<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>

What am I doing wrong here? The parameter "length" doesn't even exist in my solution...

Daniel A. White
  • 187,200
  • 47
  • 362
  • 445
Drew Hill
  • 71
  • 3

1 Answers1

0

When I ran into this error, it was due to what is within <ProjectCollection></ProjectCollection>

In my case, I originally had ProjectItem and ProjectTemplateLink, but those two cannot be mixed. Next, I changed to a multitude of SolutionFolder tags, but got the same error. What I found is that I had the path using the wrong style. In your code, remember that this is a file path, so use back-slash. (I facepalmed once I found this in my project)

<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>
Owen
  • 728
  • 7
  • 17