我需要从包含在我的解决方案文件夹内的文本文件中读取数据(它已添加到解决方案中,可从解决方案资源管理器访问)。我知道如何像这样访问它...
_prefixParts = PopulateFromFile(
@"C:\Users\Owner\Desktop\AoW\AoW\AoW\Utility\Names\namePrefix.txt");
有没有办法编写解决方案本地的文件路径?我已经尝试了所有我能想到的但没有成功的方法。
另外,如果我将该文本文件作为嵌入式资源,这是否重要?
是的。您可以将其设为嵌入式资源。或者更好的是,让它成为一种资源(.resx)。
要回答您的第一个问题:您可以使用相对路径来访问该文件。因此,假设可执行文件位于您的 bin\Debug 文件夹中。这意味着您需要向上两次才能进入项目文件夹的根目录。
例如。您的文件夹结构是:
namePrefix.txt
你需要的是..\..\Folder1\Folder2\namePrefix.txt
我想强调的是,如果您将应用程序作为 Windows 服务运行,这将不起作用。所以更好的是,使用该文件的资源。
使用 T4 模板生成解决方案文件夹的绝对路径,然后使用 Path.Combine 将其与所需文件的相对路径(类似于“AoW\Utility\Names\namePrefix.txt”)结合起来。
这是一个更好的代码示例:Accessing Projects via DTE in C# T4 Template
不,在一般情况下,不可能在解决方案/项目中获取用于构建可执行文件或库的文件的路径,因为此信息未存储在生成的程序集中(并且代码可能在完全不同的机器上运行)。
选项:
如果您只关心从 VS 执行而不是使用文件的相对路径,因为位置将始终相同。