获取当前项目的根文件夹

时间:2017-12-15 16:40:38

标签: c#

我想获取当前项目所在的文件夹。

我知道访问当前文件夹中某些内容的唯一方法是:

System.Reflection.Assembly.GetExecutingAssembly().Location

但是,这会将我带到以下形式的地址:

Z:\path\to\my\things\MyProject\bin\x86\Debug\MyProject.dll

而不是到达这个地址,我只想到达:

Z:\path\to\my\things\MyProject

我意识到我可以通过这样做来实现这一目标:

Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "../../..")

但是,我不喜欢我必须硬编码"../../.."

有没有办法在没有硬编码的情况下实现同样的目标?

修改

如果按this question中的建议尝试Environment.CurrentDirectorySystem.IO.Directory.GetCurrentDirectory();,我会转到C:\Windows\System32,因此根本没用。

1 个答案:

答案 0 :(得分:2)

根据你的评论,我会保留代码原样 - 你是正确的,硬编码..\..\..\不是要走的路 - 并且获取正在执行的程序集的路径是正确的方法此

相反,您应该为您的单元测试项目包含测试项目中的测试文件,并将文件的属性设置为“内容”和“复制到输出目录”

这会将测试文件移动到与DLL相同的位置,然后您就能正确引用它。