Я пытаюсь подключить некоторые шаблоны генерации кода к моему автоматическому процессу сборки. Наша команда SCM не хочет Visual Studio на нашей машине сборки (с которой мне сложно спорить).
Есть ли способ установить T4 без Visual Studio?
Я пытаюсь подключить некоторые шаблоны генерации кода к моему автоматическому процессу сборки. Наша команда SCM не хочет Visual Studio на нашей машине сборки (с которой мне сложно спорить).
Есть ли способ установить T4 без Visual Studio?
На самом деле мы не генерируем код... мы создаем скрипты Sandcastle, и мы определенно хотим, чтобы это было сделано на сервере сборки. Мы применили подход, в котором мы создали серию пользовательских атрибутов, которые мы украшаем нашим кодом, и формируем способ создания документа. Таким образом, у нас есть набор файлов .tt, которые отражают наши сборки для этих атрибутов и генерируют входной файл Sandcastle (.shfb). Я мог бы сделать это с помощью специального инструмента, но T4 хорошо подбирал счет.
В любом случае... Я подтвердил, что вы можете запускать TextTransform.exe без Visual Studio. Все, что вам нужно, это Microsoft.VisualStudio.TextTemplating.dll. Я создал новую виртуальную машину, установил .NET 3.5 и скопировал в файловую систему следующее:
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. Надеюсь, это когда-нибудь поможет какой-нибудь другой бедной душе:)
Я написал чистую реверсивную версию движка T4 для среды разработки MonoDevelop. Он с открытым исходным кодом, лицензированный в соответствии с разрешительной лицензией MIT/X11, поэтому вы можете вставлять движок в свое приложение или перераспределять его. Там также реализована программа командной строки TextTransform.exe и некоторые API в пространстве имен Mono.TextTemplating, чтобы помочь в размещении движка.
Единственная реальная пропавшая функция сейчас - это настраиваемые поставщики директив, но исправления для этого приветствуются: -)
Вы можете получить код из monodevelop/main/src/addins/TextTemplating в Mono SVN.
Итак, вот такой подход, который я получил:
У меня есть машина для разработки с visual studio 2010 sp1 и машиной сборки (с использованием msbuild).
Схватив тебя, тебе должно быть хорошо.
Дальнейшее чтение:
Я не пробовал, но я считаю, что вы сможете взять инструмент командной строки, выпустить его на свой сервер сборки и преобразовать свои шаблоны до/во время сборки.
Я понимаю, что вам все равно нужно будет установить Visual Studio. Зачем плавать против текущего? Вы считали, что генерируете код во время разработки, а не время сборки?
Для 12 вам нужно только скопировать
C:\Program Files (x86)\Common Files\Microsoft Shared\TextTemplating\12.0