LibGit2Sharp.NameConflictException"文件名或扩展名太长。"

时间:2016-11-28 11:42:55

标签: c# git max-path

我尝试使用Repository.Clone克隆git存储库。

这是用于克隆命令的示例代码。

public string Clone(string remoteRepository, string path, string username, string password)
{
    string myPassword;
    CloneOptions options = new CloneOptions();
    options.CredentialsProvider = (url, user, cred) =>
    {
        return new UsernamePasswordCredentials {Username = username, Password = password};
    };
    return Repository.Clone(remoteRepository, path, options);
}

代码在某些存储库上运行正常,但对于其他存储库,我得到了异常

这是我遇到的例外情况

{"无法统计文件'已剪切':文件名或扩展名太长。\ r \ n"}

"剪断"其中的路径长度为270个字符。所以我知道这与极旧的MAX_PATH规则相违背。

根据一些Windows文档,您可以通过将\?\添加到路径的开头来使用unicode路径,这将允许长路径与Windows API调用一起使用。但是,这对LibGit2Sharp来说并不适用。

有没有办法为LibGit2Sharp提供设置以允许它使用长路径?或者失败了,是否有一个替代的nuget包可以允许这种行为?

1 个答案:

答案 0 :(得分:1)

将此添加到 App.manifest ,这将允许长路径。我尝试使用/?//unc两者都没有帮助。但这很有效。

<windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
    <ws2:longPathAware>true</ws2:longPathAware>
  </windowsSettings>