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