关于堆栈溢出有几个相关的问题,但要么我的情况不同,要么我太笨了,以至于无法将这些问题与情况联系起来。我希望有人能帮我这个忙。此外,我甚至不是一个.NET开发人员,所以我事先为任何错误的术语使用道歉。
我的场景如下:用于部署我们的.net应用程序的工具(一次单击?)将其放入全名超过300个字符的目录中。应用程序使用第三方组件--让我们称之为dbstore --处理驻留在应用程序部署目录中的指定文件。
到目前为止,我们使用Assembly.GetExecutingAssembly().GetName().CodeBase来构造要传递给dbstore的文件的完全限定名。但是dbstore使用旧风格的API,并在尝试打开文件时失败。
由于dbstore预计不会很快改变,因此建议将应用程序chdir发送到部署目录,并将当前目录中的相对路径名传递给它。这也是在接受的响应PathTooLongException in C# code中描述的方法。
但是,我发现Directory.SetCurrentDirectory也抛出了PathTooLongException。即使我使用UNC路径名,例如以\\?\0000000000000\...开头的名称,也会发生这种情况。
我做了什么根本不对的事吗?还有其他功能可以使用吗?
编辑:似乎没有办法实现我正在寻找的。据我所知,无法将当前目录设置为长路径。
发布于 2010-10-29 08:39:53
在使用Environment.SetCurrentDirectory()时,会得到类似的结果吗?
如果是这样,则可能要在子文件夹之后更改目录子文件夹。
编辑:
Windows实际上为文件路径(WinXP)或260个字符(Vista)设置了255个字符的限制。请注意,此限制不适用于文件系统,因此可以将文件存储在如此长的目录路径中,但Windows Explorer和许多Windows服务无法从这种路径中读取。
实际上,它似乎还包括.NET框架方法,因为您无法访问这些文件。您可能需要编写自己的文件系统API,但这有点开销过大。你就不能缩短文件路径吗?Windows是否提供了一种缩短的文件地址方式(比如8个八位文件名)?
来源:http://labnol.blogspot.com/2006/10/limitations-with-long-file-names-on.html
https://stackoverflow.com/questions/4050199
复制相似问题