如何在 app.config xml 文件中添加 Gitlab 自定义变量

Posted

技术标签:

【中文标题】如何在 app.config xml 文件中添加 Gitlab 自定义变量【英文标题】:How to add Gitlab custom variable in app.config xml file 【发布时间】:2020-06-02 15:21:28 【问题描述】:

我正在使用 Gitlab CI 开发 C# 项目,并希望在 app.config 文件中隐藏秘密。

我在 Gitlab 和 app.config 中添加了一个变量,如下所示:

<add key="User" value="username" />
<add key="Password" value=$Password />

然后,当我尝试使用 msbuild 在 gitlab CI 中构建应用程序时,我收到一个错误:

$ msbuild "$PROJECTNAME.sln" /consoleloggerparameters:ErrorsOnly /t:Test_project /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet app.config(5,33):错误 MSB3249:应用程序配置文件“app.config”无效。 '$' 是一个意外的标记。预期的令牌是 '"' 或 '''。第 7 行,位置 33。[/builds/project/Test_project/Test_project.Service/Test_project.Service.csproj]

请指教,如何在 app.config xml 文件中添加 Gitlab 环境变量。

【问题讨论】:

属性值周围应该有引号,这就是错误消息告诉您的内容 - expected token is " or '. @CharlesMager,如果在属性值周围添加引号,它将只是文本,而不是变量的值:&lt;add key="Password" value="$Password" /&gt; cat ./Test_project.Service/bin/Release/Test_project.Service.exe .config ... &lt;add key="Password" value="$Password" /&gt; ... echo $Password password 啊,好吧 - 我有点错过了这里的重点!我不确定我是否足够了解 Gitlab 如何做到这一点来发表评论,尽管最终结果仍然需要引号。鉴于它抱怨$,它似乎根本没有被替换。 您尝试过使用value="%Password%" 吗? @NicolasPepinster,是的,结果是一个文本,就像之前的评论:&lt;add key="Password" value="%Password%" /&gt; 【参考方案1】:

对于 .xml 文件,它应该使用 $env.MY_VAR_DEFINED_IN_GITLAB

其中MY_VAR_DEFINED_IN_GITLAB,如指定的,是在Gitlab项目(或组)->设置->CI/CD->变量中定义的变量

因此在你的情况下应该可以工作:

<add key="User" value=$env.GITLAB_VAR_USERNAME/>
<add key="Password" value=$env.GITLAB_VAR_PASSWORD/>

【讨论】:

以上是关于如何在 app.config xml 文件中添加 Gitlab 自定义变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 app.config 中提供 xml 文件源并从 winform 中写入/读取这些 xml 文件?

如何将 app.config 文件添加到项目中

在Web.config或App.config中的添加自定义配置

在Web.config或App.config中的添加自定义配置

如何在 Laravel 5 中将自定义配置文件添加到 app/config?

Visual Studio中xml文件使用app.configweb.config等的智能提示的方法