我想获取当前项目所在的文件夹。
我知道访问当前文件夹中某些内容的唯一方法是:
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.CurrentDirectory
或System.IO.Directory.GetCurrentDirectory();
,我会转到C:\Windows\System32
,因此根本没用。
答案 0 :(得分:2)
根据你的评论,我会保留代码原样 - 你是正确的,硬编码..\..\..\
不是要走的路 - 并且获取正在执行的程序集的路径是正确的方法此
相反,您应该为您的单元测试项目包含测试项目中的测试文件,并将文件的属性设置为“内容”和“复制到输出目录”
这会将测试文件移动到与DLL相同的位置,然后您就能正确引用它。