解决方案中包含的文件的本地路径

时间:2013-06-03 22:17:35

标签: c# path filepath

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

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

有没有办法编写解决方案本地的文件路径?我已经尝试了所有我能想到的并且没有设法做到的事情。

另外,如果我要将该文本文件作为嵌入式资源,这甚至会重要吗?

3 个答案:

答案 0 :(得分:2)

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

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

EG。您的文件夹结构是:

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

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

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

答案 1 :(得分:0)

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

请参阅T4 Get Current Working Directory of Solution

以下是更好的代码示例:Accessing Projects via DTE in C# T4 Template

答案 2 :(得分:0)

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

选项:

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

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