我需要从我的解决方案中的文件夹中包含的文本文件中读取数据(它已添加到解决方案中,可从解决方案资源管理器中访问)。我知道如何像这样访问它......
_prefixParts = PopulateFromFile(
@"C:\Users\Owner\Desktop\AoW\AoW\AoW\Utility\Names\namePrefix.txt");
有没有办法编写解决方案本地的文件路径?我已经尝试了所有我能想到的并且没有设法做到的事情。
另外,如果我要将该文本文件作为嵌入式资源,这甚至会重要吗?
答案 0 :(得分:2)
是。您可以将其设为嵌入式资源。或者更好的是,将其作为资源( .resx )。
回答第一个问题:您可以使用相对路径来访问该文件。因此,假设可执行文件位于bin \ Debug文件夹中。这意味着您需要上升两次才能进入项目文件夹的根目录。
EG。您的文件夹结构是:
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)
不,在一般情况下,无法获取用于构建可执行文件或库的解决方案/项目内的文件的路径,因为此信息未存储在生成的程序集中(并且代码可能在完全不同的计算机上运行)。
选项:
如果您只关心从VS执行而不是使用文件的相对路径,因为位置将始终相同。