从WPF应用程序获取应用程序的目录

Joe*_*oey 163 .net c# wpf

我找到了带有AppDomain的Windows窗体的解决方案,但是WPF Application对象的等价物是什么?

Hel*_*len 320

一种方法:

System.AppDomain.CurrentDomain.BaseDirectory
Run Code Online (Sandbox Code Playgroud)

另一种方法是:

System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)
Run Code Online (Sandbox Code Playgroud)

  • 我会使用第一种替代方案.它看起来更简单,没有方法调用,并且对读取时实际执行的操作产生的疑问更少. (21认同)
  • @Helen:从赞成票来看,这显然是一个很好的答案.但是,答案有两种获取应用程序目录的方法.他们俩都会同样工作吗? (3认同)
  • 我已经在WCF服务,WPF应用程序和类库项目中使用了第一种方法,并且工作得很好. (3认同)

小智 27

这是另一个:

System.Reflection.Assembly.GetExecutingAssembly().Location
Run Code Online (Sandbox Code Playgroud)

  • 如[在文档中](http://msdn.microsoft.com/en-us/library/system.reflection.assembly.location.aspx)所述,此位置将在_shadow-copying_之后获得位置。我实际上不确定接受的答案中的建议是否受卷影复制的影响。 (2认同)
  • 这给了我正在调用的DLL的子目录,而不是主程序目录. (2认同)

小智 7

您还可以使用命令行参数的第一个参数:

String exePath = System.Environment.GetCommandLineArgs()[0]


QMa*_*ter 7

我简单地使用了string baseDir = Environment.CurrentDirectory;它,它对我有用。

祝你好运

编辑:

我曾经删除这种类型的错误,但我更喜欢编辑它,因为我认为这个答案的减号可以帮助人们了解错误的方式。:) 我知道上述解决方案没有用,我将其更改为string appBaseDir = System.AppDomain.CurrentDomain.BaseDirectory; 其他获得它的方法是:

1. string baseDir =   
    System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
 2. String exePath = System.Environment.GetCommandLineArgs()[0];
 3. string appBaseDir =    System.IO.Path.GetDirectoryName
    (System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
Run Code Online (Sandbox Code Playgroud)

祝你好运

  • 这是当前的工作目录。它*可能*与应用程序目录一致,但它们是不同的概念(最重要的是,工作目录可以更改,例如,如果您打开了一个公共文件对话框)。 (3认同)