T4 без Visual Studio?

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

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

Ответ 1

На самом деле мы не генерируем код... мы создаем скрипты 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" #>

Test: < # = System.DateTime.Now.ToString() # > ....

Из VM я выполнил Test.tt так:

C:\TextTransform.exe Test.tt

и Test.cs, содержащий

Тест: 6/10/2009 5:33:32 PM....

ПОБЕДА!!!!

Самая сложная часть - поиск 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, мне пришлось создать подстановку так:

subst X: C:\Windows\assembly

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

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

Ответ 2

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

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

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

Ответ 3

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

У меня есть машина для разработки с visual studio 2010 sp1 и машиной сборки (с использованием msbuild).

  • На машине разработки установите Visual studio 2010 sp1 sdk
  • На машине разработки установите Microsoft Visual Studio 2010 Visualization and Modeling SDK
  • На машине сборки создайте папку
  • Скопируйте следующие файлы с машины разработки в новую папку на машине сборки:
    • \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

Схватив тебя, тебе должно быть хорошо.


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


Ответ 4

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

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

Ответ 5

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

Ответ 6

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

C:\Program Files (x86)\Common Files\Microsoft Shared\TextTemplating\12.0