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

最佳答案

它确实从工作目录开始。但是,您不应使用工作目录,因为如果执行特定的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来访问文件。

09-30 11:18