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