Пользовательские шаблоны 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>

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


person Drew Hill    schedule 27.07.2016    source источник


Ответы (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>
person Owen    schedule 15.09.2016