是否可以在launchSettings.json中引用环境变量?

时间:2018-12-13 21:17:18

标签: .net-core asp.net-core-mvc

我想用一个可执行文件运行我的代码,该可执行文件是NuGet软件包的一部分。因此,exe在我的用户配置文件目录中。因此,该文件如下所示:

{
  "profiles": {
    "UITests": {
      "commandName": "Executable",
      "executablePath": "C:\\Users\\MarkKharitonov\\.nuget\\packages\\nunit.consolerunner\\3.9.0\\tools\\nunit3-console.exe",
      "commandLineArgs": "@params.txt --where:\"method == LoginSuccessWithCorrectPassword\" ..\\..\\UITests\\bin\\Debug\\net472\\UITests.dll",
      "workingDirectory": "C:\\DFDeploymentSmokeTests\\LocalTestProfiles\\qa56"
    }
  }
}

是否可以引用环境变量UserProfile并使用它代替C:\\Users\\MarkKharitonov

编辑1

我根本不希望我的名字出现在文件中。这样,只要其他人的源代码位于同一文件夹中,其他人就可以重用它,这不是问题。但是,只要我必须使用我的名字引用nuget包的路径,该文件就不能提交给源控件。

2 个答案:

答案 0 :(得分:0)

您可以通过

获取环境变量
Environment.GetEnvironmentVariable("ASPNETCORE_PATH")

如果在配置中添加.AddEnvironmentVariables (Reference)

var builder = new ConfigurationBuilder()
    ....
    .AddEnvironmentVariables();
Configuration = builder.Build();

然后可以通过

获取环境变量
Configuration["ASPNETCORE_PATH"]

PS编辑:我可以在哪里放置环境变量以便被IConfiguration读取?

  1. 内部Windows环境变量

environment variables

  1. 内部启动配置

enter image description here

  1. 通过IIS

enter image description here

答案 1 :(得分:0)

通过大量实验,它似乎在某种程度上取决于正在运行的命令。更准确地说,命令在哪个 shell 中运行。

如果它在 cmd.exe 中,%VARIABLE% 应该可以工作。

如果它在 powershell 下运行,那么在双引号可扩展字符串中时它将是 $env:VARIABLE${env:VARIABLE}

我会建议以下内容。

{
  "profiles": {
    "UITests": {
      "commandName": "Executable",
      "executablePath": "${env:UserProfile}\\.nuget\\packages\\nunit.consolerunner\\3.9.0\\tools\\nunit3-console.exe",
      "commandLineArgs": "@params.txt --where:\"method == LoginSuccessWithCorrectPassword\" ..\\..\\UITests\\bin\\Debug\\net472\\UITests.dll",
      "workingDirectory": "C:\\DFDeploymentSmokeTests\\LocalTestProfiles\\qa56"
    }
  }
}

假设 UserProfile 是 C:\Users\MarkKharitonov