我有一个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
访问文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句