Т4 без Visual Studio?

Я пытаюсь подключить некоторые шаблоны кода поколения к процессу автоматической сборки моей команды. Наша команда SCM не хочет, чтобы Visual Studio была на нашей сборочной машине (с которой мне трудно спорить).

Есть ли способ установить движок T4 без Visual Studio?

6 ответов

Я написал полностью переработанную реализацию движка T4 для MonoDevelop IDE. Это открытый исходный код, лицензируемый по разрешающей лицензии MIT/X11, поэтому вы можете свободно встраивать движок в свое приложение или распространять его. Существует также реализация инструмента командной строки TextTransform.exe и некоторые API-интерфейсы в пространстве имен Mono.TextTemplating для помощи в размещении движка.

Единственная реальная недостающая особенность сейчас - это провайдеры пользовательских директив - но исправления для этого приветствуются:-)

Вы можете получить код из monodevelop/main/src/addins/TextTemplating в Mono SVN.

На самом деле мы не генерируем код... мы генерируем скрипты Sandcastle, и мы определенно хотим, чтобы это было сделано на сервере сборки. Мы применили подход, в котором мы создали ряд пользовательских атрибутов, которые мы украшаем наш код, который формирует, как генерируется документ. Итак, у нас есть набор файлов.tt, которые отражают наши сборки для этих атрибутов, и генерирует входной файл Sandcastle (.shfb). Я мог бы сделать это с помощью специального инструмента, но T4 вполне соответствовал требованиям.

Во всяком случае... Я подтвердил, что вы можете запустить TextTransform.exe без Visual Studio. Все, что вам нужно, это Microsoft.VisualStudio.TextTemplating.dll присутствует. Я создал новую виртуальную машину, установил.NET 3.5 и скопировал в файловую систему следующее:

  • TextTransform.exe
  • TextTemplate.ico
  • Microsoft.VisualStudio.TextTemplating.dll
  • Test.tt (что-то, что я создал)

Test.tt выглядел так:

<#@ template language="C#3.5" debug="true" hostspecific="true" #>
<#@ assembly name="System.Xml" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Collections"#>
<#@ import namespace="System.Collections.Generic"#>
<#@ import namespace="System.Xml" #>
<#@ output  extension=".cs" #>

Тест: <# = System.DateTime.Now.ToString () #>....

С виртуальной машины я выполнил Test.tt примерно так:

C: \ TextTransform.exe Test.tt

и Test.cs был создан, содержащий

Тест: 10.06.2009 17:33:32....

ПОБЕДА!!!!

Сложнее всего было найти Microsoft.VisualStudio.TextTemplating.dll. Мне пришлось запустить FileMon и запустить шаблон на моем компьютере с Visual Studio. Затем FileMon сказал мне, откуда TextTransform.exe загружал его. Это может быть в нескольких местах потенциально, но я нашел его в GAC по адресу C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.TextTemplating\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.TextTemplating.dll. Для того, чтобы перейти в это место с помощью Windows Explorer, мне нужно было создать замену примерно так:

sub X: C:\Windows\ сборка

тогда я мог бы перейти к X:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.TextTemplating\9.0.0.0__b03f5f7f11d50a3a\ и скопировать dll.

Во всяком случае... спасибо за идею Mannish. Надеюсь, это когда-нибудь поможет другой бедной душе:)

Вот такой подход я выбрал:

У меня есть машина для разработки с Visual Studio 2010 SP1 и машина для сборки (с использованием msbuild).

  1. На компьютере разработчика установить Visual Studio 2010 SP1 SDK
  2. На компьютере разработчика установите Microsoft Visual Studio 2010 SDK для визуализации и моделирования.
  3. На сборочной машине создайте папку
  4. Скопируйте следующие файлы с компьютера разработчика в новую папку на компьютере сборки:
    • \ Program Files \ Microsoft Visual Studio 2010 SDK \ VisualStudioIntegration \ Common \ Assemblies \ v4.0 \
      • Microsoft.VisualStudio.TextTemplating.10.0.dll
      • Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll
      • Microsoft.VisualStudio.TextTemplating.VSHost.10.0.dll
    • \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ TextTemplating \ v10.0 \
      • Microsoft.VisualStudio.TextTemplating.Sdk.Host.10.0.dll
    • \ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ PublicAssemblies \
      • Microsoft.VisualStudio.TextTemplating.Modeling.10.0.dll
    • \ Program Files \ Общие файлы \ microsoft shared \ TextTemplating \ 10.0 \
      • TextTransform.exe
      • TextTransform.ico

Hay Presto вы должны быть хорошими, чтобы идти.


Дальнейшее чтение:


Насколько я понимаю, вам все равно нужно установить Visual Studio. Зачем плыть против течения хотя? Рассматривали ли вы создание кода во время разработки, а не во время сборки?

Я не пробовал, но думаю, что вы сможете воспользоваться инструментом командной строки, перенести его на свой сервер сборки и трансформировать свои шаблоны до / во время сборки.

http://msdn.microsoft.com/en-us/library/bb126461.aspx

Для 12 нужно только скопировать

C:\Program Files (x86)\ Общие файлы \Microsoft Shared\TextTemplating\12.0

Другие вопросы по тегам