首页 > 解决方案 > 在编译时从环境变量中设置值

问题描述

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

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

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

在 .NET 中是否有可接受的方法来执行此操作?

标签: c#.net

解决方案


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

预编译步骤:

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万一失败。


推荐阅读