根据 MSDN 文档,要获取文件的完整文件路径,请使用
var fileName = Path.GetFullPath("KeywordsAndPhrases.txt");
我假设它提供了该文件所在项目的完整路径。
'K:\HeadlineAutoTrader\Autotrader.Infrastructure.HeadlineFeeds\Data\KeywordsAndPhrases.txt'
如果没有,则返回;
'K:\HeadlineAutoTrader\AutotraderTests\bin\Debug\Data\KeywordsAndPhrases.txt'
这有点道理,因为我正在测试的代码正在测试项目中运行。
所以问题是如何在同一解决方案中的另一个类库的文件夹中获取文本文件的完整文件路径?
这是一个基于 WPF 的项目,显然它在 Web 应用程序中会更容易,因为 Server.MapPath 工作得很好
最佳答案
当您调用 File.GetFullPath
时,库会查看正在执行的程序的当前目录。除非另有说明,否则这与可执行文件所在的文件夹相同。
您可能在 Visual Studio 中 KeywordsAndPhrases.txt
文件的属性中将“复制到输出目录”设置为“始终复制”或“如果较新则复制”,这意味着它被复制到与可执行文件相同的文件夹。否则,该文件可能已被其他一些进程复制到那里(例如,手动、构建后步骤批处理文件)。这就是它在 K:\HeadlineAutoTrader\AutotraderTests\bin\Debug
而不是 K:\HeadlineAutoTrader\Autotrader.Infrastructure.HeadlineFeeds
下找到文件的原因。
How does one get the full filepath of a text file in a folder in another class library within the same solution?
这个问题没有意义。可执行文件不知道 Visual Studio 项目中的类库或文件结构。可执行文件知道程序集中嵌入的资源或文件夹中的文件。如果要查找特定文件的完整路径,请使用 Environment.CurrentDirectory 将当前目录设置为该文件夹。或使用已知的相对路径。
关于c# - Path.GetFullPath 在 C# 中返回错误的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33488666/