Tho*_*mar 300
你应该不使用Directory.GetCurrentDirectory()
你的情况,当前目录可以从执行文件夹不同,尤其是当你通过一个快捷方式执行程序.
最好Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
用于您的目的.这将返回当前正在执行的程序集所在的路径名.
虽然我建议的方法允许你区分正在执行的程序集,入口程序集或任何其他已加载的程序集,正如SonerGönül在他的回答中所说,
System.IO.Path.GetDirectoryName(Application.ExecutablePath);
Run Code Online (Sandbox Code Playgroud)
也可能就足够了.这等于
System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
Run Code Online (Sandbox Code Playgroud)
hak*_*kan 124
System.AppDomain.CurrentDomain.BaseDirectory
Run Code Online (Sandbox Code Playgroud)
这将为您提供应用程序的运行目录.这甚至适用于Web应用程序.之后,您可以访问您的文件.
kmo*_*ote 36
我用以下代码创建了一个简单的控制台应用程序:
Console.WriteLine(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
Console.WriteLine(System.AppDomain.CurrentDomain.BaseDirectory);
Console.WriteLine(System.Environment.CurrentDirectory);
Console.WriteLine(System.IO.Directory.GetCurrentDirectory());
Console.WriteLine(Environment.CurrentDirectory);
Run Code Online (Sandbox Code Playgroud)
我将生成的可执行文件复制到C:\temp2
.然后我在该可执行文件中放置了一个快捷方式C:\temp3
,并运行它(一次来自exe本身,一次来自快捷方式).它两次都给出了以下输出:
C:\temp2
C:\temp2\
C:\temp2
C:\temp2
C:\temp2
Run Code Online (Sandbox Code Playgroud)
虽然我肯定必须有一些蠢货理由来解释为什么有五种不同的方法几乎完全相同的东西,我当然不知道它是什么.然而,在大多数情况下,您可以自由选择您喜欢的任何一种情况.
更新:
我修改了快捷方式属性,将"开始于:"字段更改为C:\temp3
.这导致以下输出:
C:\temp2
C:\temp2\
C:\temp3
C:\temp3
C:\temp3
Run Code Online (Sandbox Code Playgroud)
......至少展示了不同方法之间的一些区别.
Hos*_*Rad 22
试试这个:
System.Environment.CurrentDirectory
Son*_*nül 20
string appPath = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
Run Code Online (Sandbox Code Playgroud)
返回指定路径字符串的目录信息.
获取启动应用程序的可执行文件的路径,包括可执行文件名.
fhn*_*eer 19
用这个,
var currentDirectory = System.IO.Directory.GetCurrentDirectory();
Run Code Online (Sandbox Code Playgroud)
你也可以使用它.
var currentDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
Run Code Online (Sandbox Code Playgroud)
1.
Directory.GetCurrentDirectory();
Run Code Online (Sandbox Code Playgroud)
2.
Thread.GetDomain().BaseDirectory
Run Code Online (Sandbox Code Playgroud)
3.
Environment.CurrentDirectory
Run Code Online (Sandbox Code Playgroud)