[英]C# Azure Devops API Git: How to push files using the C# API
因此,我已經設法按照提供的示例代碼使用 API 推送基本文件。
為此,我逐行讀取文件並將它們轉換為字符串,然后像示例那樣在 GitCommitRef 中將它們作為原始文本發送。 但是,我不確定如何推送無法輕松讀取和轉換為字符串的更復雜的文件,例如 DLL。
有沒有辦法使用 C# 推送此類文件?
下面是我用來創建提交的代碼:
GitCommitRef commit = new GitCommitRef()
{
Comment = "Add a sample file",
Changes = new GitChange[]
{
new GitChange()
{
ChangeType = VersionControlChangeType.Add,
Item = new GitItem() {Path = "/TESTFOLDER/" + fileName, GitObjectType = GitObjectType.Blob, IsFolder = false },
NewContent = new ItemContent()
{
Content = Utilities.ReadFile(fileNamePath),
ContentType = ItemContentType.RawText
}
}
}
};
無法讀入字符串的 Dll 和其他更復雜的文件可以通過將文件讀入字節數組,將該數組轉換為 base64 字符串,並推送內容類型為 EncodedBase64 的字符串來推送。
推 base 64 字符串
new GitChange()
{
ChangeType = VersionControlChangeType.Add,
Item = new GitItem() {Path = "/TESTFOLDER/" + fileName2, GitObjectType = GitObjectType.Blob, IsFolder = false },
NewContent = new ItemContent()
{
Content = Utilities.ReadFileAsBytes(fileNamePath2).ToString(),
ContentType = ItemContentType.Base64Encoded
}
}
獲取字符串作為 Base 64
using (System.IO.FileStream stream = new System.IO.FileStream(path, System.IO.FileMode.Open))
{
byte[] arr = new byte[stream.Length];
int numBytesToRead = (int)stream.Length;
while (numBytesToRead > 0)
{
int n = stream.Read(arr, 0, (int)stream.Length);
if (n == 0)
{
break;
}
numBytesToRead -= n;
}
return Convert.ToBase64String(arr);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.