隐藏开源项目的私人细节

时间:2012-09-05 22:28:30

标签: c#

我有一个.net github项目,它基本上是Web API的包装器。在测试项目中,我使用API​​密钥调用API。我需要将此密钥保密,我如何在Visual Studio项目中完成此任务?

在其他一些项目中,比如python,我可以让git忽略文件(config.py)并使用config.example.py之类的东西。但在visual studio的情况下,由于缺少文件Config.cs,项目将无法编译。解决这个问题的正确方法是什么?我正在考虑使用这种忽略文件的方法,让他们执行一个应该Config.example.cs重命名为Config.cs的构建脚本?

4 个答案:

答案 0 :(得分:9)

这是.config文件的最佳选择。根据它是Web应用程序还是控制台应用程序,您的项目中将包含web.config或app.config文件。

您可以使用appSettings部分存储API密钥。

为了使事情变得更容易,您实际上可以从另一个文件中读取此部分,即:specialappsettings.config,然后忽略存储库中的单个文件。

修改 web.config (或 app.config ):

<configuration>
<appSettings file="specialappsettings.config">
</appSettings>
<system.web>
<!-- standard web settings go here -->
</system.web>
</configuration>

创建一个新的 specialappsettings.config 文件:

<appSettings>
<add key="APIKey" value="YourApiKeyValue" />
<add key="AnotherKey" value="AnotherValue" />
</appSettings>

可以通过以下代码访问:

var apiKey = ConfigurationManager.AppSettings["APIKey"];

注意:

  • 您可以将原始web.config文件中的设置保留为 好吧,但这可以让你忽略来自的特定设置文件 您的git存储库,而不会影响项目的其余部分 必要的配置细节。
  • 可以保存相同的“密钥” 无论是文件,外部文件都将覆盖原始文件 web.config文件值。

答案 1 :(得分:1)

您可能正在寻找项目的App.config文件。编译时,它将被复制到<application>.exe.config。用户可以根据需要编辑该配置文件。

在该配置文件中,您可以添加API密钥:

<configuration>
    <appSettings>
        <add key="APIKey" value="12345"/>
    </appSettings>
</configuration>

然后,您可以使用ConfigurationManager.AppSettings

从代码中访问它
string apiKey = ConfigurationManager.AppSettings["APIKey"];

答案 2 :(得分:1)

一种选择是使用.config文件,而不是在源代码中使用硬编码的密钥。

更多信息Using Settings in C#step-by-step guide

<configuration>
   <appSettings>
      <add key="SecretKey" value="0" />
   </appSettings>
</configuration>


var secretKey = ConfigurationManager.AppSettings.Get("SecretKey");

答案 3 :(得分:-1)

也许您可以将密钥存储在Config.cs文件之外并在运行时加载它。

奖励,使用您的代码的其他人不必重新编译项目以更改为他们的API密钥。