簡體   English   中英

C# Azure Devops API Git:如何使用 C# API 推送文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM