在WPF(C#或vb.net)中查找应用程序可执行文件的位置?

Sha*_*hin 47 c# vb.net wpf

如何在WPF(C#或VB.Net)中找到应用程序可执行文件的位置?

我在Windows窗体中使用了这段代码:

Application.ExecutablePath.ToString();
Run Code Online (Sandbox Code Playgroud)

但是使用WPF我从Visual Studio收到此错误:

System.Window.Application不包含ExecutablePath的定义.

Blo*_*ard 86

System.Reflection.Assembly.GetExecutingAssembly().Location 应该管用.

  • 这可能无法一直正常工作.它将获得执行程序集,而不是应用程序的可执行文件.这意味着如果您希望应用程序的可执行文件在运行引用的DLL时,这将不起作用. (14认同)

Kon*_*lph 32

几种选择:

Directory.GetParent(Assembly.GetExecutingAssembly().Location)

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

仅在VB中:

My.Application.Info.DirectoryPath
Run Code Online (Sandbox Code Playgroud)

  • System.AppDomain.CurrentDomain.BaseDirectory 返回当前目录,而不是可执行位置,即当从 Outlook 运行时(作为链接发送到 \\server\folder\file.exe,它会将 BaseDirectory 设置为用户文档而不是可执行位置 (2认同)

Sal*_*vaf 12

以下内容适用于最新版本的 .NET Core:

System.Environment.ProcessPath
Run Code Online (Sandbox Code Playgroud)

这将返回启动当前正在运行的进程的可执行文件的路径。


dex*_*ang 7

这对你很有用:Application.ExecutablePath等于:

Process.GetCurrentProcess().MainModule.FileName;
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一对我来说完美的事情。另一种方法 - GetExecutingAssembly 为我提供了 dll 而不是 exe(如上所述),并且从我编码的位置无法使用 Application.ExecutablePath。 (3认同)