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>