代码之家  ›  专栏  ›  技术社区  ›  Miserable Variable

directory.setcurrentdirectory引发pathtoolongexception

  •  2
  • Miserable Variable  · 技术社区  · 14 年前

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

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

    到目前为止我们正在使用 Assembly.GetExecutingAssembly().GetName().CodeBase 构造要传递到dbstore的文件的完全限定名。但是dbstore使用了老式的API,当它试图打开文件时失败了。

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

    但是我发现 Directory.SetCurrentDirectory 同时抛出 PathTooLongException . 即使使用的是UNC路径名(例如以开头的名称),也会发生这种情况。 \\?\0000000000000\...

    我做了什么根本错误的事情吗?还有其他功能要使用吗?

    编辑:似乎没有办法达到我想要的目标。据我所知,无法将当前目录设置为长路径。

    1 回复  |  直到 12 年前
        1
  •  0
  •   Aurelien Ribon    14 年前

    在使用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

    推荐文章