2014-02-19 80 views
1

我試圖從MonoDevelop中使用TextTransform可執行文件。我使用sharpdevelop作爲我的IDE,並創建了一個簡單的文本模板文件來檢查它,並一切順利。該文件在保存時生成。當我去使用可執行文件時,我不斷遇到關於找不到文件的錯誤。作爲一個例子,我是用<#@ assembly name="System.Core" #>,這將輸出,當我試圖使用可執行文件:Mono TextTransform.exe

「ERROR元數據文件‘System.Core程序’無法找到」。

我嘗試了幾個不同的東西,比如傳遞-P的參數(儘管我不確定我是否做得對)。直到我將tt文件本身改爲使用<#@ assembly name="System.Core.dll" #>而不是「System.Core」,可執行文件才成功。但是,在更改爲包含文件擴展名後,SharpDevelop現在會在保存tt文件時提供此輸出。

從System.Core.dll加載System.Core.dll的代碼完成信息時出錯: 找不到程序集文件。

有什麼我失蹤爲了得到兩個工作?我並不需要這兩者,但想明白爲什麼會發生這種情況。

回答

1

這似乎是TextTransform.exe中的一個錯誤,因爲我期望它允許使用程序集名稱而不是文件名。我也可以在MonoDevelop中用下面的T4模板重現它。

<#@ 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模板。他們顯然在做一些不同的事情。