我正在尝试使用MonoDevelop中的TextTransform可执行文件。我正在使用sharpdevelop作为我的IDE,并创建了一个简单的texttemplate文件来检查它,一切顺利。该文件是在保存时生成的。当我去使用可执行文件时,我不断遇到有关无法查找文件的错误。作为一个例子,我使用<#@ assembly name="System.Core" #>
,当我尝试使用可执行文件时会输出:
“无法找到错误元数据文件'System.Core'”。
我尝试了几个不同的东西,比如传递-P
参数(虽然我不确定我是否做到了这一点)。直到我更改tt文件本身才使用<#@ assembly name="System.Core.dll" #>
而不是“System.Core”,可执行文件才成功。但是,在更改为包含文件扩展名后,SharpDevelop现在在保存tt文件时提供此输出。
从System.Core.dll加载System.Core.dll的代码完成信息时出错: 找不到汇编文件。
为了让两者都起作用,我有什么遗漏吗?我真的不需要两者,但想了解为什么会发生这种情况。
答案 0 :(得分:1)
这似乎是TextTransform.exe中的一个错误,因为我希望它允许使用程序集名称而不是文件名。我也可以使用以下T4模板在MonoDevelop中重现它。
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<html><body>
The date and time now is: <#= DateTime.Now #>
</body></html>
上述模板适用于SharpDevelop 4.4。
更改模板以便它在程序集指令中使用System.Core.dll也适用于SharpDevelop。代码完成错误可以忽略。解析器错误地生成此错误。所以你现在可以使用System.Core.dll离开程序集指令。
Visual Studio还支持带有或不带.dll文件扩展名的两个版本的模板。
有趣的是,SharpDevelop实际上使用Mono的T4模板引擎来运行这些T4模板。他们显然做了不同的事情。