This is discussed in detail by the BCL team, see notes
In essence, there is no way to do this in .Net code and adhere to BCL. Too many functions rely on the ability to canonicalize a path name (which immediately starts using functions that are waiting for MAX_PATH to execute).
You can wrap all win32 functions that support the "\\? \" Syntax, with which you can implement a set of functions with a long path, but this will be cumbersome.
Since a huge number of tools (including explorer [1]) cannot process long path names, it is not recommended to go along this route unless you are happy that all interaction with the resulting file system goes through your library (or a limited number of tools that built to handle it like robocopy)
In response to your specific needs, I would investigate whether using robocopy directly would be sufficient to complete this task.
[1] Vista has ways to alleviate the problem with some fancy renaming under the hood, but this is fragile at best)
ShuggyCoUk Feb 10 '09 at 10:10 2009-02-10 10:10
source share