Host.ResolvePath和相对路径

时间:2014-05-19 16:22:01

标签: t4

我已将我的t4模板放在CodeTemplate \ MyTemplateFolder文件夹中,但无法从那里开始工作。

问题是我需要访问位于项目根目录中的名为models的文件夹。

即:

Project Root Folder\CodeTemplates\MyTemplateFolder\MyTemplate.tt

我需要访问以下文件:

Project Root Folder\Models

但是,我无法弄清楚如何使用this.Host.ResolvePath从我的模板中获取Models文件夹。

有什么建议吗?

使用:

var relativePathModelsFolder = @"..\..\Models";
var path = this.Host.ResolvePath(relativePathModelsFolder);

给了我根文件夹的绝对路径.... \模型卡在最后。

我似乎无法遍历到根目录,然后进入我的Models文件夹。

2 个答案:

答案 0 :(得分:10)

这对我来说似乎更简单:

({
<#
var projectPath = Host.ResolveAssemblyReference("$(ProjectDir)");
var viewPath = projectPath + "Views";

#>
   view:"<#=viewPath #>",
}
)

答案 1 :(得分:1)

我通过获取项目然后获取路径然后添加文件夹来解决问题:

获得项目:

Project GetLibraryProject(string tier)
    {
        return VisualStudioHelper.GetAllProjects().Where(x => x.Name == tier).First();
    }

获取路径:

string GetProjectPath(Project project)
{
    var pathProjectFile = project.FullName;
    return pathProjectFile.Replace(project.Name + ".csproj", "");
}

全部放在一起:

var project = GetLibraryProject("MyMvcApp.MyClassLibrary");
var path = GetProjectPath(project);
var myUsefulPath = path + @"MyFolderParent\MyFolder";