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