2016-11-28 21 views
1

私はgitリポジトリをRepository.Cloneを使って複製しようとしています。ここでLibGit2Sharp.NameConflictException "ファイル名または拡張子が長すぎます。"

は、cloneコマンドのために使用されるコードの例ピースです。

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); 
} 

コードは、いくつかのリポジトリ上で正常に動作しますが、他人のために、私は例外

は、ここで私は

は{ "ファイルをのstatに失敗しました取得しています例外は『切り取ら』のget:ファイル名をまたは拡張子が長すぎます。\ r \ n "}

『それの全体が切り取ら』パスが270文字の長さです。だから私はこれが非常に古いMAX_PATHルールの悪いことであることを知っています。

は、Windowsのドキュメントのいくつかによると、あなたは長いパスは、Windows APIの呼び出しで使用できるようになりますパスの先頭に\?\を追加することによって、ユニコードパスを使用することができます。しかし、これはLibGit2Sharpでは機能しません。

それは長いパスで作業できるようにLibGit2Sharpに設定を供給する方法はありますか?そうでないと、この動作を可能にする代替のナゲットパッケージがありますか?

答えて

1

は長いパスを許すことになるApp.manifestにこれを追加します。私は/?//uncを使ってみましたが、どちらもあまり役に立ちませんでした。しかし、これはうまくいった。私のために動作しませんでした

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

。 –

+0

それは別のDLLですか? DLLを変更する必要があります。 – Prajwal

関連する問題