5

私のオープンソースソフトウェアは、リモートフォルダをローカルデスクトップに同期します。リモートフォルダは、パスの長さに制限がないAlfrescoに置くことができます(/root/very/very/very/long/name.txt)。

私が使用したアプリケーションを開発するとき、System.IO.File.OpenWriteそしてSystem.IO.Stream.Writeそれらは数百文字を超えるパスをサポートしていないPathTooLongExceptionようです。そのため、ユーザーは長いパスを操作するときのようなエラーを報告します。

UNCパスは、一部のアプリケーションとの非互換性につながるため、絶対に避ける必要があります。

この場合、どのライブラリ/コードを使用する必要がありますか?

オープンソースのC#である必要があります。

4

5 に答える 5

3

AlphaFSでは、非常に長いパス (「\?\」スタイルを使用) を使用でき、System.IO 名前空間を模倣します。

System.IO を使用しているかのように、このライブラリを使用できる可能性があります。たとえば、System.IO.File.Copy() の代わりに AlphaFS.Win32.Filesystem.File.Copy() を使用します。

ソース

于 2013-02-19T10:03:54.963 に答える
2

Base Class Libraries Long Pathの実装を試すことができます。ただし、デフォルトの .NET I/O メソッドと混同し始めると、すべてが機能するわけではないことに注意してください。

于 2013-02-19T08:00:20.880 に答える
1

PathTooLongExceptionの.NET2.0回避策」(記事+コード)。

明らかにオープンソースではないCodeProjectOpen License(CPOL)の下でライセンスされています。

ただし、2つのコミットだけでは、非常にアクティブなプロジェクトにはなりません...

于 2013-02-19T07:42:32.717 に答える
1

この回答で概説されているように、次を使用して相対パスを使用してパスを分割してみてください。

Directory.SetCurrentDirectory()

C# コードの PathTooLongException

于 2013-02-19T08:02:00.897 に答える
1

ネイティブ ファイル システム アクセス

リビジョン 185 (2013 年 2 月 19 日)以降、ソース コード ファイルのヘッダーで指定されているように、ライブラリはMicrosoft Public License (MS-PL)の対象となっています。

有望に見えますが、コードが十分にしっかりしていないため、著者はエンタープライズ環境で使用しないようにアドバイスしています。

このライブラリにはいくつかの単体テストがありますが、ドキュメントがありません。

于 2013-02-19T07:44:19.330 に答える