2

关于 stackoverflow 有几个相关的问题,但要么我的情况不同,要么我太笨,无法将这些与情况联系起来。我希望有人可以帮助我解决这个问题。此外,我什至不是 .NET 开发人员,因此对于任何错误的术语使用,我提前道歉。

我的场景如下: 用于部署我们的 .net 应用程序(One Click?)的工具将其放在全名超过 300 个字符的目录中。该应用程序使用第三方组件——我们称之为 dbstore——处理驻留在应用程序部署目录中的指定文件。

到目前为止,我们正在使用Assembly.GetExecutingAssembly().GetName().CodeBase构建要传递给 dbstore 的文件的完全限定名。但是 dbstore 使用旧式 API 并在尝试打开文件时失败。

由于 dbstore 预计不会很快更改,因此建议将应用程序 chdir 到部署目录并将当前目录中的相对路径名传递给它。这也是C# 代码中接受的响应 PathTooLongException 中描述的方法

但是我发现Directory.SetCurrentDirectory也会抛出PathTooLongException. 即使我使用 UNC 路径名(例如以\\?\0000000000000\...

我在做一些根本错误的事情吗?还有其他功能可以使用吗?

编辑:似乎没有办法实现我正在寻找的东西。据我所知,没有办法将当前目录设置为长路径。

4

1 回答 1

0

使用 Environment.SetCurrentDirectory() 时是否得到类似的结果?

如果是这样,您可能希望在子文件夹之后更改目录子文件夹。

编辑:
Windows 实际上为文件路径(WinXP)或 260 个字符(Vista)设置了 255 个字符的限制。请注意,此限制不适用于文件系统,因此您可以将文件存储在如此长的目录路径中,但 Windows 资源管理器和许多 Windows 服务无法从该路径读取。

实际上,它似乎还包括 .NET 框架方法,因为您无法访问此类文件。您可能需要编写自己的文件系统 API,但这有点过多的开销。你不能缩短文件路径吗?Windows 是否提供了一种缩短文件寻址方式(如 8 个八位字节文件名)?

资料来源: http: //labnol.blogspot.com/2006/10/limitations-with-long-file-names-on.html

于 2010-10-29T08:39:53.443 回答