0

我需要从包含在我的解决方案文件夹内的文本文件中读取数据(它已添加到解决方案中,可从解决方案资源管理器访问)。我知道如何像这样访问它...

_prefixParts = PopulateFromFile(
    @"C:\Users\Owner\Desktop\AoW\AoW\AoW\Utility\Names\namePrefix.txt");

有没有办法编写解决方案本地的文件路径?我已经尝试了所有我能想到的但没有成功的方法。

另外,如果我将该文本文件作为嵌入式资源,这是否重要?

4

3 回答 3

2

是的。您可以将其设为嵌入式资源。或者更好的是,让它成为一种资源(.resx)。

要回答您的第一个问题:您可以使用相对路径来访问该文件。因此,假设可执行文件位于您的 bin\Debug 文件夹中。这意味着您需要向上两次才能进入项目文件夹的根目录。

例如。您的文件夹结构是:

  • SolutionName\ProjectName\bin\debug --> 可执行文件的位置
  • SolutionName\ProjectName\Folder1\Folder2 --> 您的位置namePrefix.txt

你需要的是..\..\Folder1\Folder2\namePrefix.txt

我想强调的是,如果您将应用程序作为 Windows 服务运行,这将不起作用。所以更好的是,使用该文件的资源。

于 2013-06-03T22:57:34.810 回答
0

使用 T4 模板生成解决方案文件夹的绝对路径,然后使用 Path.Combine 将其与所需文件的相对路径(类似于“AoW\Utility\Names\namePrefix.txt”)结合起来。

请参阅T4 获取解决方案的当前工作目录

这是一个更好的代码示例:Accessing Projects via DTE in C# T4 Template

于 2013-06-03T22:53:57.913 回答
0

不,在一般情况下,不可能在解决方案/项目中获取用于构建可执行文件或库的文件的路径,因为此信息未存储在生成的程序集中(并且代码可能在完全不同的机器上运行)。

选项:

  • 将文件复制到输出文件夹(将该文件的“复制到输出文件夹”设置为 true),文件将位于可执行文件旁边 - 您将能够根据可执行文件的路径和文件名组合完整路径
  • 嵌入为资源并从资源中读取
  • 将文件的路径指定为命令行参数/配置设置

如果您只关心从 VS 执行而不是使用文件的相对路径,因为位置将始终相同。

于 2013-06-03T22:54:37.143 回答