在我的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/