3

我正在尝试从我的解决方案中读取文件。我想知道如何使用相对路径定位文件。我的解决方案包含3 个项目。我要读取的文件位于项目 A中,但正在读取它的代码位于项目 B中。如果我使用..\file.txt它将带我到Project B而不是Project A。如果我使用Application.StartPath 我得到

C:\\Users\\Linda\\AppData\\Local\\Microsoft\\VisualStudio\\10.0\\Extensions\\tangible\\t4 editor\\2.1.1

而我需要找到我开发代码的目录C:\Sp_CodeGenerator\...

我也尝试过使用

Environment.GetFolderPath

Directory.GetCurrentDirectory();
System.IO.Path.GetDirectoryName(System.IO.Path.GetDirectoryName(Application.ExecutablePath))'`
System.AppDomain.CurrentDomain.BaseDirectory.ToString();

但这些都产生相同的结果,并将我带到 Visual Studio 程序文件,而不是在硬盘上创建解决方案的位置。

还有什么我应该尝试的吗?

4

1 回答 1

4

在我看来,您正在从 t4 模板中执行与路径相关的代码?这实际上会影响答案,因为处理路径的所有正常方法都将在 Visual Studio 和您正在使用的 t4 编辑器插件的上下文中。

您需要访问 ITextTemplatingEngineHost 以正确解析您的路径。

将特定于主机的导演添加到您的模板

<#@template language="c#" hostspecific="true" #>

然后你可以通过

this.Host.ResolvePath(path);

//also available (Gets the path and file name of the text template that is being processed.)
//this.Host.TemplateFile

请参阅http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.texttemplating.itexttemplatingenginehost(v=vs.110).aspx

于 2013-01-10T03:08:26.300 回答