【问题标题】:Is it possible to specify executablePath as a relative path in launchsettings.json?是否可以将 executablePath 指定为 launchsettings.json 中的相对路径?
【发布时间】:2019-01-22 07:04:56
【问题描述】:

我正在查看一位前同事编写的项目,在文件launchSettings.json(属性下)中,他有以下内容:

{
  "profiles": {
    "ProjectName": {
      "commandName": "Executable",
      "executablePath": "C:\\code\\project\\\\src\\project.name\\bin\\Debug\\net471\\NServiceBus.Host.exe"
    }
  }
}

executablePath 是他的本地存储库所在的路径。但当然,其他团队成员不会有相同的本地路径。这很好,我们不应该强制执行。

两个问题:

  • 为什么会出现,目的是什么?
  • 这可以是相对路径吗? -> 可以

-> "..\net471\NServiceBus.Host.exe"

【问题讨论】:

  • 尝试相对路径时发生了什么?
  • 我想这行得通... :D

标签: c# .net nservicebus


【解决方案1】:

是的,相对路径可以正常工作(例如.\NServiceBus.Host.exe,无需使用..\ 转到父文件夹然后返回同一文件夹,.\ 表示当前文件夹)。

Properties/launchSettings.json也可以处理所有MSBuild reserved and well-known properties

我使用$(MSBuildProjectDirectory) 来获取源项目的路径(在 bin 文件夹之外)。例如,这会将我带到另一个项目,该项目是我正在运行的项目的兄弟项目:

"profiles": {
  "MyApp": {
    "commandName": "Project",
    "commandLineArgs": "$(MSBuildProjectDirectory)/../Tests",
  }
}

【讨论】:

    【解决方案2】:

    您可以在代码中使用AppContext.BaseDirectory 并从launchsettings.json 文件中连接链接。

    AppContext.BaseDirectory 值对应AppDomain.BaseDirectory

    【讨论】:

    • 那个文档页面很小,一个实际的例子会让你的答案更容易理解。
    • AppContext.BaseDirectory 属性返回当前主可执行文件所在的目录。尝试使用并检查你得到了什么?
    猜你喜欢
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2015-06-05
    相关资源
    最近更新 更多