【问题标题】:Get assembly executable directory获取程序集可执行目录
【发布时间】:2016-06-28 09:01:24
【问题描述】:

我有两个应用程序,例如应用 1 和应用 2。 正常运行时,App1 会显示其程序集可执行位置。 但是当我从 App2 调用 App1 时,它会返回 App2 的启动位置。

那么,我从 App2 调用 App1 时,如何获取 App1 的启动路径?

【问题讨论】:

  • 欢迎来到 StackOverflow!请展示您尝试过的内容并说明您到底想要什么:“启动路径”或“组装位置”?
  • 我得到启动路径 = Application.StartupPath。当我运行 App1 正常上行路径返回真实位置。但是当我从 App2 调用 App1 时,它返回 App2 位置。那么当我从 App2 调用 App1 时如何获取 App1 的启动路径?
  • 所以当然是一样的。 StartupPath 不是程序集的路径,而是启动应用程序的工作目录。因此,如果您的 App2 不更改其工作目录,则 App1 具有相同的启动路径。

标签: c# .net-assembly executable


【解决方案1】:

您可以通过以下方式获取当前正在执行的程序集的目录:

string assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

GetExecutingAssembly() 返回当前正在执行的程序集,Location 是该程序集的完整路径或 UNC 路径。

Path.GetDirectoryName()返回完整路径的目录。


请注意,程序集的路径与启动路径不同。启动路径是您启动应用程序的工作目录。如果您的应用不更改其工作目录,则由第一个应用启动的所有应用都将具有相同的启动路径。

【讨论】:

  • 无法通过字符串获取 assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);它返回 App2 启动路径。
  • 今天修复了一个错误,Application.Startup 正在导航到 Internet Explorer 目录,当然我们不能在那里写入文件,这修复了它写入程序集的目录,谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-09-20
  • 2011-02-05
  • 2013-02-15
  • 2010-09-22
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多