如何在项目文件中引用开发人员特定的变量?

问题描述 投票:0回答:1

我正在使用特定的解决方案模板。该模板使用通过 .csproj 项目文件调用的 powershell 脚本来构建应用程序。我想使用环境变量或类似的东西,它不会同步到 git 存储库。这是因为开发人员之间的 powershell 脚本中的某些设置必须有所不同。

我发现的大多数信息都是关于在 .cs 文件中使用环境变量,但这不是我在这里尝试使用它们的地方。此外,我遇到过几种使用局部变量的方法,但我很难判断该使用什么。有

launchSettings.json
Settings.settings
,我相信还有一个我现在忘记了。
launchSettings.json
本身也有几个选项,
commandLineArgs
Environment variables

我知道如何创建本地 .txt 文件并使用 powershell 脚本读取该文件,但在我看来应该有一种更内置的“正确”方法来解决此问题。

这是 .csproj 文件中的相关行:

<Exec Command="PowerShell -ExecutionPolicy Bypass -File installScript.ps1 -someArguments myArguments/>

进一步的背景: 从我自己找到的情况来看,如下链接所示,在 .csproj 中使用 $(MyVariable) 应该给出所需环境变量的值?但如果是这样,我就无法让它发挥作用。

我尝试通过 VS '22“调试 > 项目调试属性 > 环境变量”添加环境变量,产生以下

launchSettings.json

{
  "profiles": {
    "ProjectName": {
      "commandName": "Project",
      "environmentVariables": {
        "MyVariable": "MyValue"
      }
    }
  }
}

然后尝试:

<Exec Command="PowerShell -ExecutionPolicy Bypass -File installScript.ps1 -MyArgument &quot;$(MyVariable)&quot;/>

结果为空字段:

Executing deployment script...
PowerShell -ExecutionPolicy Bypass -File installScript.ps1 **** -MyArgument ""
c# environment-variables csproj
1个回答
0
投票

您可以使用机密管理器:https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-8.0&tabs=windows

在 Visual Studio 中,您可以右键单击项目来管理用户机密,这会覆盖 appsettings(.development).json

或者您可以使用

dotnet
cli:
dotnet user-secrets set "Movies:ServiceApiKey" "12345" 

顾名思义,它适用于不应该提交版本控制的秘密,但我认为它对此也很有效。您还可以在 appsettings.json 中设置一个键,例如

"ServiceApiKey": "SetInSecretsJson"
提醒开发者它的存储位置。

然后您可以像这样从 PowerShell 访问该变量:

(dotnet user-secrets list | Select-String 'Movies:ServiceApiKey = (.*)').Matches[0].Groups[1].Value

将此与调用 PowerShell 脚本相结合,我相信这应该可以实现您的目标。

© www.soinside.com 2019 - 2024. All rights reserved.