c# - 在编译时从环境变量中设置值
问题描述
我需要在 dll 中包含有效的 API 密钥,而无需将该 API 密钥纳入我团队的版本控制。我承认该字符串可以从 dll 中反编译,但这并不是真正的问题,因为这是一个内部工具。
目前,我已将一个.resx
文件添加到.csproj
包含 API 密钥的文件中。这通过.gitignore
显式排除在版本控制之外。但是,我不想依赖.gitignore
作为一种安全措施。
我想要做的是在编译时读取环境变量并将正确的值注入到const
属性或其他东西中。
在 .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
万一失败。
推荐阅读
- ruby-on-rails - 从字符串 / Ruby 中提取子字符串
- amazon-web-services - gRPC ECS 弹性负载均衡器
- typescript - 如何使用动态键使 TypeScript 类型检查对象文字?
- json - 将带有嵌套对象的 JSON 导入 Elastic Search
- google-cloud-platform - Google Cloud Run 应用程序中的“正在关闭:Master”
- excel - 保存为 CSV 的宏会阻止宏工作
- javascript - TypeError:无法读取 null 的属性“play”,即使它在反应中不是 null
- python - 有没有办法在 python selenium 的数字输入上使用 send_keys?
- c# - CS1069:在命名空间中找不到类型名称“RegistryKey”
- c# - UWP ScrollViewer 滚动使用鼠标滚轮但不使用触摸