如何解决在vb.net控制台应用程序中使用URL下载私有Github存储库
每次更改计算机上的代码时,我都需要在其他PC上远程自动更新vb.net应用程序。我在Github上有一个私有存储库,用于存储我的代码。
当应用程序检测到其内部版本号不同于最新的内部版本号时,我希望它进入我的Github存储库,并在检测到内部版本号更改时下载一个二进制文件夹。我需要在vb.net控制台应用程序中完成此操作。显然,其他计算机无法在其计算机上安装Git,因此git clone和其他命令可能无法正常工作。
由于我已经使私有存储库保持最新状态,所以我想知道是否可以使用它来更新应用程序的文件?我已经尝试创建一个没有运气的秘密令牌,任何帮助将不胜感激。
git clone https://@github.com/username/repo_name.git 这适用于我的计算机,不适用于未安装git的其他计算机。
总结一下-我没有编码问题,只需要一种方法来下载专用存储库即可替换应用程序文件!我对Github相当陌生,有时仍然让我感到困惑!谢谢!
解决方法
经过大量研究,我想出了一个解决方案。为此,可以使用LibGit2Sharp(https://www.nuget.org/packages/LibGit2Sharp/)和Microsoft.Alm.Authentication。
只需去找到并安装在NuGet软件包管理器中即可。我创建了一个简单的控制台应用程序,以处理来自私有Github存储库的应用程序更新需求,以下代码指定了凭据并将存储库克隆到所需的文件夹中:
Public Sub Clone(ByVal sourceUrl As String,ByVal workingDir As String)
Dim cloneOptions = New CloneOptions With {
.IsBare = False,.Checkout = True,.CredentialsProvider = New Handlers.CredentialsHandler(Function(a,b,c) New UsernamePasswordCredentials() With {
.Username = "your@email.com",.Password = "your_password"
})
}
Repository.Clone(sourceUrl,workingDir,cloneOptions)
End Sub
快速笔记-Microsoft.Alm.Authentication是您可以在NuGet上找到的Git Credential Manager客户端。它大约在5年前发布,但文档记录仍然很少,但是如果您出于任何原因要克隆私有存储库,都可以使用。我还想指出,如果您需要以编程方式管理存储库,则值得一试的是.NET的LibGit2Sharp。
干杯!