如何在T4中获取项目目录?

4

我一直在尝试在Mono中使用T4支持,但注意到一个非常繁琐的事情:运行T4模板时的当前目录是主目录。我需要能够从当前项目目录中读取几个文件,但是我不知道该怎么做。

<#@ template language="C#v3.5" #>
<#@ output extension="txt" #>

<#=System.IO.Directory.GetCurrentDirectory() #>

产量
/home/earlz

我希望你能将其翻译为类似于以下内容:

/home/earlz/MyProject

我该如何解决这个问题?

此外,我尝试使用hostspecific和Host.ResolvePath,但是我得到了一个NotImplementedException异常。

2个回答

7

好的,我想我已经弄清楚了。你必须自己解析路径。要获取模板文件的目录(这对我来说已经足够了),只需使用以下内容:

<#= System.IO.Path.GetDirectoryName(Host.TemplateFile) #>

将您的模板hostspecific属性设置为true。 - giacomelli

1

啊,那就是我的问题了。我之前很困惑为什么它不起作用。我还在使用MonoDevelop 2.4.1(在Arch Linux上),也许我会尝试自己构建来获取最新版本。 - Earlz
啊,当我意识到2.6实际上还没有发布时,Ah dang已经标记了这个过时的软件包:( 我可能会忍受一切,直到2.6发布并且Arch Linux的软件包得到更新。 - Earlz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接