Как добавить условия в шаблонную схему Visual Studio и генерировать проекты на основе условий - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть требование для создания пользовательского шаблона проекта с использованием vsix и IWizard. Мастер покажет три флажка. например (бот, вкладка, чат). Выходное решение должно иметь проекты только для флажков, выбранных в мастере, т. Е. Если выбраны и Bot, и Tab, тогда в решении будут созданы проекты Bot.csproj и Tab.csproj. Если выбраны все три из них, должны быть созданы все проекты. Сейчас он генерирует все проекты независимо от выбора, потому что нет способа добавить условия в самый верхний файл .vsTemplate. Ниже vsTemplate, который я имею в коде, есть ли способ, которым я могу этого достичь?

Короче говоря, когда мы создаем проект asp. net mvc, если мы выбрали " Флажок «Тесты», тогда он также сгенерирует проект модульного тестирования. Если мы не выбрали, это не генерирует. У меня аналогичное требование.

<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:sdk="http://schemas.microsoft.com/developer/vstemplate-sdkextension/2010">
  <TemplateData>
    <Name>My App (C#)</Name>
    <Description>A project for creating a chat application using C#</Description>
    <Icon>Chat.ico</Icon>
    <ProjectType>CSharp</ProjectType>
    <LanguageTag>csharp</LanguageTag>
    <PlatformTag>C#</PlatformTag>
    <RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
    <SortOrder>1000</SortOrder>
  </TemplateData>
  <TemplateContent>
    <ProjectCollection>
      <ProjectTemplateLink ProjectName="Tab">
        TabProject\Tab.vstemplate
      </ProjectTemplateLink>
      <ProjectTemplateLink ProjectName="Bot">
        BotProject\Bot.vstemplate
      </ProjectTemplateLink>
      <ProjectTemplateLink ProjectName="Chat">
        ChatProject\Chat.vstemplate
      </ProjectTemplateLink>
    </ProjectCollection>
  </TemplateContent>
</VSTemplate>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...