私は、この恐ろしい 260 文字の完全修飾パス制限を回避する方法を見つけようとしていますが、同時に、そもそもなぜパス制限があるのだろうか!? 260 が「多い」ように見える人もいることは知っていますが、この問題に遭遇して以来、実際にはそうではありません。
基本的に:
なぜ文字数制限が必要なのですか?
どうやってそれを回避しますか?
\\?\
UNC プレフィックスを使用して、パスの「DOS モード」から抜け出します。UNC パスの最大長は 32k 文字です。
詳細はこちら: http://msdn.microsoft.com/en-us/library/aa365247.aspx
MSDNから:
Windows API には、最大合計パス長 32,767 文字の拡張長パスを許可する Unicode バージョンもある多くの関数があります。このタイプのパスは、バックスラッシュで区切られたコンポーネントで構成され、それぞれが GetVolumeInformation 関数の lpMaximumComponentLength パラメータで返される値までです (この値は通常 255 文字です)。延長された長さのパスを指定するには、"
\\?\
" プレフィックスを使用します。たとえば、"\\?\D:\very long path
"。
まず、これは特に C# とは関係なく、その制限が存在する Windows API とすべて関係があります。:)
この質問とその回答を見て、MSDN: Naming Files, Paths, and Namespaces にアクセスしてください。
Unicode ファイル パス (質問への回答と MSDN の記事で説明されています) が解決策になる場合がありますが、いくつかの注意事項があります。