带有向导的VS自定义模板将无法构建

时间:2016-07-27 18:37:29

标签: c# xml templates visual-studio-templates

我正在尝试为非常常用的服务创建模板。但是,每次我尝试构建时都会收到错误:

  

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

我在这里做错了什么?参数&#34;长度&#34;在我的解决方案中甚至不存在......

1 个答案:

答案 0 :(得分:0)

当我遇到此错误时,原因是<ProjectCollection></ProjectCollection>

内的内容

在我的情况下,我最初有ProjectItemProjectTemplateLink,但这两个不能混在一起。接下来,我更改为多个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>