VS пользовательских шаблонов с помощью мастера не будет строить

Я пытаюсь создать шаблон для сервиса, который очень часто используется. Однако каждый раз, когда я пытаюсь собрать, я получаю сообщение об ошибке:

При обработке ItemTemplate "MyProjectTemplate.vstemplate" возникла проблема. > Длина не может быть меньше нуля. Имя параметра: длина."

И это все. Мой корневой файл шаблона - это ProjectGroup, которая ссылается на другие шаблоны проекта. Вот корневой файл.vstemplate:

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

Что я здесь не так делаю? Параметр "длина" даже не существует в моем решении...

1 ответ

Когда я столкнулся с этой ошибкой, это было связано с тем, что внутри <ProjectCollection></ProjectCollection>

В моем случае у меня изначально было ProjectItem а также ProjectTemplateLink, но эти два не могут быть смешаны. Затем я изменился на множество SolutionFolder теги, но получил ту же ошибку. Я обнаружил, что у меня был неправильный стиль. В вашем коде помните, что это путь к файлу, поэтому используйте обратную косую черту. (Я получил маску, как только нашел это в своем проекте)

<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>
Другие вопросы по тегам