T4 без Visual Studio?

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

В других случаях это, вероятно, просто способ группировки тесно связанных вещей, как в вашем object примере. Обратите внимание, что признак LocParam запечатан, что означает, что все подклассы должны находиться в одном и том же модуле / файле компиляции.

33
задан kellyb 10 June 2009 в 21:37
поделиться

4 ответа

We're not actually generating code... we're generating Sandcastle scripts and we definitely want that done on the build server. We've taken an approach where we've created a series of custom attributes that we decorate our code with that shapes how the doc is generated. So we have a set of .tt files that reflect our assemblies for these attributes, and generates Sandcastle's input file (.shfb). I could have done it with a custom tool, but T4 fit the bill nicely.

Anyway... I've confirmed that you can run TextTransform.exe without Visual Studio. All you need is the Microsoft.VisualStudio.TextTemplating.dll present. I created a fresh VM, installed .NET 3.5, and copied the following to the file system:

  • TextTransform.exe
  • TextTemplate.ico
  • Microsoft.VisualStudio.TextTemplating.dll
  • Test.tt (something I created)

Test.tt looked like this:

<#@ 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 () #> ....

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

subst X: C: \ Windows \ assembly

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

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

36
ответ дан 27 November 2019 в 17:42
поделиться

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

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

5
ответ дан 27 November 2019 в 17:42
поделиться

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

3
ответ дан 27 November 2019 в 17:42
поделиться

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

37
ответ дан 27 November 2019 в 17:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: