C# 相对路径不是从工作目录开始

问题描述 投票:0回答:1

我有一个 C# 程序,它会从相对路径

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

c# filepath
1个回答
2
投票

它确实从工作目录开始。但是,您不应该使用工作目录,因为如果执行特定的 IO 任务(例如有时“打开文件”对话框或(显然)“Directory.SetCurrentDirectory”方法),工作目录可能会有所不同。相反,您应该使用

AppDomain.CurrentDomain.BaseDirectory
属性来获取程序集文件所在的路径。你可以这样使用:
var relativePath = Path.Combine ("report", "report1.rdlc");
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
var absolutePath = Path.Combine (baseDirectory, relativePath);

现在您应该使用 
absolutePath

来访问该文件。

    

© www.soinside.com 2019 - 2024. All rights reserved.