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

Ear*_*rlz 4 .net mono t4

我一直在搞乱Mono中的T4支持,并注意到一件非常麻烦的事情.运行T4模板时的当前目录是主目录.我需要能够从当前项目的目录中读取一些文件,但我不知道如何.

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

<#=System.IO.Directory.GetCurrentDirectory() #>
Run Code Online (Sandbox Code Playgroud)

产量

/home/earlz
Run Code Online (Sandbox Code Playgroud)

在哪里,我希望它产生类似的东西

/home/earlz/MyProject
Run Code Online (Sandbox Code Playgroud)

我该如何克服这个问题?

此外,我尝试了hostspecific和Host.ResolvePath,但我得到了一个N​​otImplementedException

Ear*_*rlz 7

好吧,我想我已经弄明白了.你只需要自己实际解决路径.要获取模板文件的目录(这对我来说足够好),只需使用:

<#= System.IO.Path.GetDirectoryName(Host.TemplateFile) #>
Run Code Online (Sandbox Code Playgroud)