【问题标题】:Launch process not from application path启动过程不是从应用程序路径
【发布时间】:2021-02-10 15:53:43
【问题描述】:

我有一个必须从我的代码启动的控制台应用程序。此应用程序有一个位于同一文件夹中的配置文件。如果我手动启动控制台应用程序,它会找到配置文件并且一切正常。但是当我在我的代码中将它作为一个进程启动时,它会尝试在我的应用程序文件夹中查找配置,因此我需要将其复制到 Debug/Release 文件夹。我可以避免这种行为,因为我希望这个控制台应用程序作为一个模块独立定位吗?

【问题讨论】:

  • 所以你有 DirectoryA => {DDL_A, Config_A} 和 DirectoryB => {DDL_B, Config_B}。 A 正在调用 B。例如,B 需要一个仅在 Config_B 中的连接字符串。还是 A 试图获取 Config_B。
  • 感谢您的回复,InBetween 给了我一个问题。配置文件不是“App.config”,它只是从控制台应用程序读取并手动解析的文件。
  • Assembly.GetExecutingAssembly().Location 将为您提供执行此代码的 dll 的当前位置。

标签: c# .net


【解决方案1】:

您可以从正在执行的程序集中加载文件。 Assembly.GetExecutingAssembly().Location 将为您提供执行此代码的 ddl 的当前位置。

var config = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);

【讨论】:

    【解决方案2】:

    您需要定义您的进程的WorkingDirectory。更多信息请查看ProcessStartInfo.WorkingDirectory

    在您的情况下,您可能希望将 UseShellExecute 设置为 false 并将工作目录设置为可执行文件的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 2010-09-26
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      相关资源
      最近更新 更多