C# 对开源项目隐藏私有详细信息

C# 对开源项目隐藏私有详细信息,c#,C#,我有一个.NETGithub项目,它基本上是web API的包装器。在测试项目中,我使用API键调用API。我需要将此密钥保持私有,如何在VisualStudio项目中实现这一点 在其他一些项目中,比如python,我可以让git忽略文件(config.py),并使用类似于config.example.py的内容。但是在VisualStudio中,由于缺少文件Config.cs,项目将无法编译。解决这个问题的正确方法是什么?我正在考虑使用相同的方法忽略该文件,并让他们执行一个构建脚本,该脚本应将

我有一个.NETGithub项目,它基本上是web API的包装器。在测试项目中,我使用API键调用API。我需要将此密钥保持私有,如何在VisualStudio项目中实现这一点


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

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


另外,使用您的代码的其他人不必重新编译项目来更改其API密钥。

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


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

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

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

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

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

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

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

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

更多信息和


var secretKey=ConfigurationManager.AppSettings.Get(“secretKey”);

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

更多信息和


var secretKey=ConfigurationManager.AppSettings.Get(“secretKey”);

这是.config文件的完美选择。根据它是web应用程序还是控制台应用程序,您的项目中将有一个web.config或app.config文件

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

为了让事情变得更简单,您实际上可以从另一个文件(即:specialapsetings.config)读取此部分,然后忽略存储库中的单个文件

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

注:

  • 您可以将设置保存在原始web.config文件中,如下所示 但是这可以让你忽略文件中的特定设置 您的git存储库不会影响项目的其余部分 必要的配置细节
  • 相同的“密钥”可以保存在 但是,外部文件将覆盖原始文件 web.config文件值

这是.config文件的完美选择。根据它是web应用程序还是控制台应用程序,您的项目中将有一个web.config或app.config文件

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

为了让事情变得更简单,您实际上可以从另一个文件(即:specialapsetings.config)读取此部分,然后忽略存储库中的单个文件

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

注:

  • 您可以将设置保存在原始web.config文件中,如下所示 但是这可以让你忽略文件中的特定设置 您的git存储库不会影响项目的其余部分 必要的配置细节
  • 相同的“密钥”可以保存在 但是,外部文件将覆盖原始文件 web.config文件值

为什么要将配置存储在代码文件中?数据文件是一个更好的主意。为什么要将配置存储在代码文件中?数据文件是一个更好的主意。那么他们的api密钥在哪个文件中,我会忽略哪个?我建议使用上面的代码将api密钥和类似的特定细节放在一个单独的文件(create appsettings.config)中。然后忽略git存储库中的
appsettings.config
文件。这将使应用程序的其余部分正常工作,因为运行web.config文件是必需的,但不会有这样的具体细节。有没有办法在解决方案中跨多个项目共享
.config
文件?@EhteshChoudhury有,只需指向
app.config
文件中相同的
specialappsettings.config
文件,它是一个相对路径,因此您可以将其移动到父文件夹并使用
——也就是说,在新的.NET版本中,这是一种相当过时的方法,因此我建议改为查看新的配置API。@ManiGandham您是说用于.NET Core的Secret Manager工具吗,或者其他一些针对.NET Framework的新的最佳实践?那么,他们的api密钥在哪一个中,我将忽略哪一个?我建议使用上述代码将api密钥和类似的特定细节放在单独的文件(create appsettings.config)中。然后忽略git存储库中的
appsettings.config
文件。这将使应用程序的其余部分正常工作,因为运行web.config文件是必需的,但不会有这样的具体细节。有没有办法在解决方案中跨多个项目共享
.config
文件?@EhteshChoudhury有,只需指向
app.config
文件中相同的
specialappsettings.config
文件,它是一个相对路径,因此您可以将其移动到父文件夹并使用
——也就是说,在新的.NET版本中,这是一种相当过时的方法,因此我建议改为查看新的配置API。@ManiGandham您是在谈论用于.NET Core的Secret Manager工具,还是其他一些新的最佳prac
<configuration>
   <appSettings>
      <add key="SecretKey" value="0" />
   </appSettings>
</configuration>


var secretKey = ConfigurationManager.AppSettings.Get("SecretKey");
<configuration>
<appSettings file="specialappsettings.config">
</appSettings>
<system.web>
<!-- standard web settings go here -->
</system.web>
</configuration>
<appSettings>
<add key="APIKey" value="YourApiKeyValue" />
<add key="AnotherKey" value="AnotherValue" />
</appSettings>
var apiKey = ConfigurationManager.AppSettings["APIKey"];