2009-01-14 29 views
6

我正在动态生成代码,目前使用String.Format和嵌入占位符 - 但重新格式化C#代码以用作模板是一种痛苦,我认为使用T4模板会更好。我可以使用我的产品重新分配Microsoft T4引擎吗?

但是,代码生成将在正在运行的系统上发生,因此我需要知道我可以安全合法地将Microsoft T4引擎与我的产品重新分配。

其他人做了这个?或者知道(法律)答案?

+1

T4可再发行组件的(EULA)许可证是什么意思?有没有可再分发的? – 2009-01-14 14:09:55

+0

这就是问题所在 - 我还没有找到任何一个(还)。我知道它必须以某种方式在MS内部打包,因为它仅用于他们的新P&P Blueprints产品中。 – Rammesses 2009-01-14 14:29:57

回答

5

看起来有可能很快会有另一种选择。昨天,Miguel de Icaza在MonoDevelop上发布了关于T4的整合,所以我预计任何时候都会有一个单声道等价的T4工具集。

参见:http://tirania.org/blog/archive/2009/Mar-10.html

+0

这实际上已经发布,您可以从MonoDevelop存储库获取源代码。 一个快速编译.Net和(有点争论),你得到一个相当易于使用的T4引擎为您的项目。我想我应该写一篇关于如何运作的博客文章。 – Rammesses 2009-05-15 10:35:57

3

您可以重新分配T4作为DSLToolsRedist的一部分,但是,它需要安装Visual Studio 2005标准版或更高版本。我不相信T4可以在没有Visual Studio的情况下合法地重新分配。你描述的场景将是directly supported in Visual Studio 2010

2

我有答案,不幸的是它没有Oleg的建议。 (通过Oleg的方式在T4上做了很棒的工作)。此时你不能重新分配T4 - 它是VS的一部分。在VS2010中,可以预编译T4模板,然后使用不带T4依赖项的应用程序重新分发这些预编译模板以运行它们。

1

我有我自己的模板代码生成器系统,在VS2008出来之前,在独立的appdomain中编译代码。

如果你有兴趣,发表评论,我会发布一个网址的代码。

使用我的模板引擎的代码是here,您可以使用Web浏览器浏览它或指向一个Subversion客户端。 请注意,从这里开始的链接确实在该单词之后停止,但服务器端WMD呈现器会将该链接泄漏到以下文本中。

请注意,如果您只是复制该名称空间中的单个文件,那么它将不会自行编译,它需要LVK.Delegates和LVK.Scripting中的一些东西,命名空间从上面的链接起几个级别。如果你不想吮吸整个图书馆,那么你需要一次性提取它所抱怨的部分,直到它编译完成。

在同一个存储库中还有一个库的二进制版本 /LVK_3_5/trunk/Binaries/Debug/LVK。如果您下载它,只需添加对其的引用即可,并检查课程 LVK.Text.Templates.TextTemplate

不幸的是,我目前没有任何图书馆的例子。

基本上,使用模板:

TextTemplate tt = new TextTemplate(); 
tt.Source = "... code here, check example file above ..."; 
tt.Compile(); 
String output = tt.Generate(singleObjectParameter); 

在模板中,这基本上是被插入在一个单一的方法(这意味着它不如T4中的能够方面的所有码轻松添加方法,但可以使用匿名方法),则可以访问传入其中的数据对象作为名为data的参数。

所以只输出传递参数的内容:

<%= data %> 

重蹈覆辙:

<% for (Int32 index = 0; index < 10; index++) { %> 
<%= data %> 
<% } %> 

如果您有任何问题,他们在[email protected]发送到我的邮箱。

0

这是一个真正的耻辱,但正如奥列格指出的,如果它没有经过测试,那么如何释放它。

lassevk,当然我很感兴趣 - 正在考虑重新调整我大约10年前建立的模板引擎,但我总是为更轻松的生活而努力!

2

为清楚起见,官方的回答是,你不能分发微软T4引擎从Visual Studio的单独部件。

但是,从Visual Studio 2010开始,您可以使用并重新分发预编译的模板,这些模板不依赖于Visual Studio。

您还可以在安装了Visual Studio的计算机上使用Visual Studio外部的T4。

您还可以免费授权和重新分发Visual Studio Isolated Shell,并将其用作工具的主机 - 它包括T4。

从Visual Studio 2010 SP1开始,您有权通过VS安装目录中的buildserver.txt中的许可证将T4复制到构建机器。

相关问题