Шаблоны Visual Studio - создавайте файлы на уровне решения - PullRequest
0 голосов
/ 02 мая 2020

У меня есть определение для визуального решения студии. Я достигаю этого, определяя шаблон верхнего уровня для решения, а затем два шаблона проекта.

Вот шаблон решения:

<VSTemplate Version="2.0.0" Type="ProjectGroup"
    xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
    <TemplateData>
        <Name>Hosted Process (.net Core)</Name>
        <Description>.NET Core hosted process with boilerplate code for building container/linux deployable applications.</Description>
        <Icon>__TemplateIcon.png</Icon>
        <ProjectType>CSharp</ProjectType>
        <DefaultName>HostedProcessApp</DefaultName>
        <ProvideDefaultName>true</ProvideDefaultName>
    </TemplateData>
    <TemplateContent>
      <ProjectCollection>
        <ProjectTemplateLink TargetFolderName="$projectname$" ProjectName="$projectname$">
           HostedProcessTemplate\MyTemplate.vstemplate
        </ProjectTemplateLink>
        <ProjectTemplateLink TargetFolderName="Tests" ProjectName="$projectname$.Tests" CopyParameters="true">
           HostedProcessTemplateTests\MyTemplate.vstemplate
        </ProjectTemplateLink>
      </ProjectCollection>
    </TemplateContent>
</VSTemplate>

Это работает хорошо! Но сейчас мне бы хотелось создать элементы на уровне решения, а не в самих проектах (у меня есть файл nuget и .gitignore, я хочу существовать для каждого решения, созданного с использованием шаблона).

I ' мы пытались добавить элементы в шаблон решения как "ProjectItem", но не работают:

<VSTemplate Version="2.0.0" Type="ProjectGroup"
    xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
    <TemplateData>
        <Name>Hosted Process (.net Core)</Name>
        <Description>.NET Core hosted process with boilerplate code for building container/linux deployable applications.</Description>
        <Icon>__TemplateIcon.png</Icon>
        <ProjectType>CSharp</ProjectType>
        <DefaultName>HostedProcessApp</DefaultName>
        <ProvideDefaultName>true</ProvideDefaultName>
    </TemplateData>
    <TemplateContent>
      <ProjectCollection>
        <ProjectItem TargetFileName="nuget.config">nuget.config</ProjectItem>
        <ProjectItem TargetFileName="Coverlet.runsettings">Coverlet.runsettings</ProjectItem>
        <ProjectItem ReplaceParameters="true" TargetFileName="$projectname$.sln.DotSettings">$projectname$.sln.DotSettings</ProjectItem>
        <ProjectItem TargetFileName=".dockerignore">.dockerignore</ProjectItem>
        <ProjectTemplateLink TargetFolderName="$projectname$" ProjectName="$projectname$">
           HostedProcessTemplate\MyTemplate.vstemplate
        </ProjectTemplateLink>
        <ProjectTemplateLink TargetFolderName="Tests" ProjectName="$projectname$.Tests" CopyParameters="true">
           HostedProcessTemplateTests\MyTemplate.vstemplate
        </ProjectTemplateLink>
      </ProjectCollection>
    </TemplateContent>
</VSTemplate>

Кому-нибудь удалось это сделать? Спасибо за указатели заранее!

...