在我的C#项目中,有APIKeys.cs文件,其中包含带有API key 的const字符串。
我希望这些字符串在Git服务器中为空,但在本地计算机中具有实际的API key 。
因此, pull 项目的人们可以毫无问题地对其进行编译,而我的本地计算机仍将在同一文件中具有API key 。

如果我尝试上传带有空字符串的APIKeys.cs文件,那么我将无法获得带有API key 的本地文件,因为当我尝试推送它时,它将覆盖空的APIKeys.cs文件。我也不能忽略这个文件,因为它将从Git服务器中删除空的APIKeys.cs文件。

那么,什么是最好的自动方法来解决此问题,该方法将允许服务器中包含空字符串的类文件,因此当人们将其 pull 出并在本地计算机中具有真实的类文件时,项目将是可编译的?

最佳答案

我现在想出了另一种解决方案,它虽然不完美,但对我来说仍然足够好,例如:
APIKeys.cs文件:

public static partial class APIKeys
{
    public static readonly string ImgurClientID = "";
    public static readonly string ImgurClientSecret = "";
    public static readonly string GoogleClientID = "";
    public static readonly string GoogleClientSecret = "";
    public static readonly string PastebinKey = "";
    ...
}
APIKeysLocal.cs文件:
public static partial class APIKeys
{
    static APIKeys()
    {
        ImgurClientID = "1234567890";
        ImgurClientSecret = "1234567890";
        GoogleClientID = "1234567890";
        GoogleClientSecret = "1234567890";
        PastebinKey = "1234567890";
        ...
     }
}

忽略Git中的APIKeysLocal.cs文件,如果没有此文件的人将其从解决方案资源管理器中删除,他们仍然可以编译项目。

如果使用项目预构建事件尚不存在,则我还会自动创建空的APIKeysLocal.cs文件:
cd $(ProjectDir)APIKeys\

if not exist APIKeysLocal.cs (
    type nul > APIKeysLocal.cs
)

这样,用户无需执行任何操作即可编译项目。

关于c# - 在Git中 stash API key 的正确方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21774844/

10-13 07:21