Создание шаблонов проектов Visual Studio с помощью CruiseControl.Net или MSBuild - PullRequest
0 голосов
/ 18 марта 2010

У меня есть рабочий процесс в CruiseControl.Net, который успешно создает и тестирует проект MSBuild, который вызывает мое решение Visual Studio 2010.

Как создавать шаблоны проектов Visual Studio в CruiseControl.Net илиMSBuild?На сервере сборки не установлена ​​Visual Studio 2010.

Спасибо за ваше время!

Примечание: Это может быть расширено на любое другое решение, которое может быть написано с помощьюпакет, но я не могу установить Visual Studio 2010 на компьютере.

Ответы [ 2 ]

1 голос
/ 29 марта 2010

Мне удалось выяснить, что при создании zip-файла с файлом .vstemplate создается шаблон проекта Visual Studio.

0 голосов
/ 14 июня 2011

Есть пара приемов, которые нужно использовать, если вы хотите иметь более пары шаблонов, а также чтобы они выглядели «красиво» в Visual Studio, то есть разделены на каталоги.

  1. Создайте структуру каталогов, которая моделирует разделы, которые вы хотите отображать
  2. Для каждого шаблона создайте каталог для хранения файлов

Возьмите простой пример типа Enum, который должен быть flags. У нас есть каталог FlagEnum, который содержит

FlagEnum.cs

namespace $rootnamespace$
{
    using System;

    /// <summary>
    /// 
    /// </summary>
    [Flags]
    public enum $safeitemrootname$
    {
        // Suggest using hex rather than decimals as below to avoid overlapping/missing values
        A = 0x1,
        B = 0x2,
        C = 0x4,
        D = 0x8,
        E = 0x10,
        F = Ox20
    }
}

MyTemplate.vstemplate

<VSTemplate Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
  <TemplateData>
    <DefaultName>Flags.cs</DefaultName>
    <Name>Flag Enum</Name>
    <Description>Enum that is meant to be a set of flags</Description>
    <ProjectType>CSharp</ProjectType>
    <SortOrder>10</SortOrder>
    <Icon Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="4515" />
  </TemplateData>
  <TemplateContent>
    <References />
    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs"    ReplaceParameters="true">Enum.cs</ProjectItem>
  </TemplateContent>
</VSTemplate>

Затем у нас есть файл MSBUIlD для создания zip-файла - он использует расширение Community Tasks для получения возможности Zip

<?xml version="1.0" encoding="UTF-8"?>
<Project DefaultTargets="Build"     xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
    <!-- Import a bunch of external targets -->
    <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

    <!-- The templates we want to produce -->
    <ItemGroup>
               <ItemTemplate Include="FlagEnum" />
               <!--
    <ItemTemplate Include="GlobalConfigurationTask">
        <Category>Configuration\</Category>
       </ItemTemplate>
                -->
    </ItemGroup>

   <!-- Ok, standard action is to create clean zip files -->
   <Target Name="Build" DependsOnTargets="Clean;Zip;" />

    <Target Name="Clean">
    <!-- Need this for the first time through when Build doesn't exist -->
    <MakeDir Directories="Build" Condition="!Exists('Build')" />
    <!-- Can't delete it if it has contents, so delete them first -->
    <Delete Include="Build\**\*.*" Condition="!Exists('Build')" />
    <RemoveDir Directories="Build" />
    <MakeDir Directories="Build" Condition="!Exists('Build')" />
    </Target>

    <Target Name="Zip" Outputs="%(ItemTemplate.Identity)" >
        <MakeDir Directories="Build\%(ItemTemplate.Category)" Condition="%(ItemTemplate.Category) != ''" />
        <CreateItem Include="$(MSBuildProjectDirectory)\%(ItemTemplate.Category)%(ItemTemplate.Identity)\**\*.*" Exclude="$(MSBuildProjectDirectory)\%(ItemTemplate.Category)%(ItemTemplate.Identity)\**\_svn\**\*.*;$(MSBuildProjectDirectory)\%(ItemTemplate.Category)%(ItemTemplate.Identity)\**\.svn\**\*.*">
            <Output TaskParameter="Include" ItemName="ZipFiles" />
        </CreateItem>
        <Zip Files="@(ZipFiles)" ZipFileName="$(MSBuildProjectDirectory)\Build\%(ItemTemplate.Category)%(ItemTemplate.Identity).zip" WorkingDirectory="$(MSBuildProjectDirectory)\%(ItemTemplate.Category)%(ItemTemplate.Identity)" />
    </Target>
</Project>

Это создаст структуру каталогов Build со всеми заархивированными шаблонами в их правильном расположении. Затем вы просто копируете это в соответствующий каталог \ Templates \ ItemTemplates \ Visual C #

...