C#相对路径无法从工作目录启动

时间:2017-04-20 04:31:58

标签: c# filepath

我有一个C#程序,它会从相对路径./report/report1.rdlc读取一个文件,但有时由于未知原因,它从完全不同的地方C:\Windows\system32\report\report1.rdlc找到该文件,但文件实际上是放置的在C:\Program Files (x86)\Application1\report\report1.rdlc中,该程序位于C:\Program Files (x86)\Application1\内。相对路径没有从工作目录开始的原因是什么?

1 个答案:

答案 0 :(得分:1)

它确实从工作目录开始。但是,您不应该使用工作目录,因为如果执行特定的IO任务(例如,有时是打开文件对话框或(显然)Directory.SetCurrentDirectory方法),它可能会有所不同。相反,您应该使用AppDomain.CurrentDomain.BaseDirectory属性来获取程序集文件所在的路径。您可以这样使用:

var relativePath = Path.Combine ("report", "report1.rdlc");
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
var absolutePath = Path.Combine (baseDirectory, absolutePath);

现在您应该使用absolutePath来访问该文件。