在编译时根据环境变量设置值

时间:2019-06-07 23:46:18

标签: c# .net

我需要在dll中包含有效的API密钥,而该API密钥不将其放入我团队的版本控制中。我承认该字符串可以从dll中反编译,但这并不是真正的问题,因为这是针对内部工具的。

当前,我已将一个.resx文件添加到包含API密钥的.csproj文件中。明确通过.gitignore将其排除在版本控制之外。但是,我不想依靠.gitignore作为安全措施。

我想做的是在编译时读取环境变量,并将正确的值注入const属性或其他内容中。

.NET中有一种可接受的方法吗?

1 个答案:

答案 0 :(得分:0)

一种实现使用环境变量的目标的方法可能是添加一个预构建步骤,该步骤运行一个脚本以将环境变量写入文件,例如:

预构建步骤:

echo namespace Foo ^{ public class Bar ^{ public const string Key = ^"%secretkey%^"^;^}^} > "$(ProjectDir)test.cs"

然后执行清理该文件的构建后步骤:

构建后步骤

echo namespace Foo ^{ public class Bar ^{ public const string Key = ^"*****^"^;^}^} > "$(ProjectDir)test.cs"

万一失败,我仍然将test.cs放在.gitignore中。