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

问题描述:

我想使用Repository.Clone克隆git仓库。LibGit2Sharp.NameConflictException“文件名或扩展名太长。”

下面是用于克隆命令的示例代码片段。

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包?

将此添加到App.manifest这将允许长路径。我试过用/?//unc都没有太大的帮助。但是这工作。

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

这不适合我。 –

+0

这是一个单独的DLL吗?那么你需要修改DLL。 – Prajwal