没有Visual Studio的T4?

kel*_*lyb 33 .net t4

我正在尝试将一些代码生成模板连接到我的团队的自动构建过程.我们的SCM团队不希望在我们的构建机器上使用Visual Studio(我很难与之争论).

有没有办法在没有Visual Studio的情况下安装T4引擎?

Mik*_*son 37

我为MonoDevelop IDE编写了一个干净的逆向工程T4引擎实现.它是开源的,根据许可的MIT/X11许可证授权,因此您可以自由地将引擎嵌入您的应用程序或重新分发它.还有一个TextTransform.exe命令行工具的实现,以及Mono.TextTemplating命名空间中的一些API,以帮助托管引擎.

现在唯一真正缺少的功能是自定义指令提供程序 - 但欢迎使用补丁:-)

您可以从Mono SVN中的monodevelop/main/src/addins/TextTemplating获取代码.


kel*_*lyb 36

我们实际上并没有生成代码...我们正在生成Sandcastle脚本,我们肯定希望在构建服务器上完成.我们已经采用了一种方法,我们已经创建了一系列自定义属性,我们使用这些自定义属性来修改文档的生成方式.所以我们有一组.tt文件反映了这些属性的程序集,并生成了Sandcastle的输入文件(.shfb).我本可以用自定义工具完成它,但是T4非常适合这个账单.

无论如何......我已经确认你可以在没有Visual Studio的情况下运行TextTransform.exe.您只需要Microsoft.VisualStudio.TextTemplating.dll.我创建了一个新的VM,安装了.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" #>
Run Code Online (Sandbox Code Playgroud)

测试:<#= 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.

无论如何......感谢mannan的想法.希望有一天这有助于其他一些可怜的灵魂:)

  • 无法让这个工作,你是否必须在构建服务器上做任何特殊的事情(注册dll)或者它只是一个粘贴和去的情况?谢谢你的建议 (4认同)

Wil*_*vel 9

所以这是我最终采取的方法:

我有一台带有visual studio 2010 sp1的开发机器和一台构建机器(使用msbuild).

  1. 在开发机器上安装Visual Studio 2010 sp1 sdk
  2. 在开发计算机上安装Microsoft Visual Studio 2010 Visualization&Modeling SDK
  3. 在构建计算机上创建一个文件夹
  4. 将以下文件从开发计算机复制到构建计算机上的新文件夹:
    • \ 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

干草presto你应该很高兴去.


进一步阅读:



nki*_*kes 5

我没有尝试过,但我相信您可以使用命令行工具,将其放在构建服务器上,并在构建之前/期间转换模板.

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


小智 5

我的理解是您仍然需要安装 Visual Studio。为什么要逆流而行呢?您是否考虑过在设计时而不是构建时生成代码?