我正在尝试将一些代码生成模板连接到我的团队的自动构建过程.我们的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,并将以下内容复制到文件系统:
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的想法.希望有一天这有助于其他一些可怜的灵魂:)
所以这是我最终采取的方法:
我有一台带有visual studio 2010 sp1的开发机器和一台构建机器(使用msbuild).
干草presto你应该很高兴去.
进一步阅读:
我没有尝试过,但我相信您可以使用命令行工具,将其放在构建服务器上,并在构建之前/期间转换模板.
http://msdn.microsoft.com/en-us/library/bb126461.aspx
| 归档时间: |
|
| 查看次数: |
11978 次 |
| 最近记录: |