Т4 без Visual Studio? - PullRequest
       34

Т4 без Visual Studio?

32 голосов
/ 11 июня 2009

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

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

Ответы [ 6 ]

36 голосов
/ 08 сентября 2009

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

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

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

36 голосов
/ 11 июня 2009

На самом деле мы не генерируем код ... мы генерируем скрипты 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, мне нужно было создать такую ​​подстановку:

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

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

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

9 голосов
/ 18 мая 2011

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

У меня есть машина для разработки с 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 \ Common Files \ microsoft shared \ TextTemplating \ 10.0 \
      • TextTransform.exe
      • TextTransform.ico

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


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


5 голосов
/ 11 июня 2009

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

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

3 голосов
/ 11 июня 2009

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

0 голосов
/ 09 апреля 2015

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

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

...