代码之家  ›  专栏  ›  技术社区  ›  Russell

Visual Studio 2008引用太长?

  •  3
  • Russell  · 技术社区  · 15 年前

    我最近重新组织了源代码管理,发现我们的一个解决方案不再构建。唯一的错误是:

    错误65未知的生成错误,' 指定的路径、文件名或两者都是 太长了。完全限定的文件 名称必须少于260个字符, 目录名必须小于 超过248个字符。”

    我浏览了Visual Studio中的每个引用,每个引用的最长完整路径(路径和文件名)是161个字符。

    因此,我的解决方案文件夹结构是:

    C:\项目\u svn\abc\branches\01.02.03\abc\abc 套房\abc.def.ghijklm.nop\

    任何帮助都将非常感谢,我不觉得这个文件夹结构太长,考虑到项目的规模,并组织的事情更好。

    以下是一些可能有帮助的技术细节(如果您需要更多信息,请告诉我): 在Windows XP或Windows 7上运行的Visual Studio 2008 SP 2。使用Subversion作为SCM。用c/wpf编码。

    谢谢

    2 回复  |  直到 14 年前
        1
  •  5
  •   JaredPar    15 年前

    我认为这里可能发生的事情是,您的一个项目正在使用一个相对的提示路径,该路径将非常远离树,然后返回目录结构。例如

    c:\foo\bar\baz\..\..\..\some\other\dir\foo.dll

    尽管实际文件的路径小于256,但是相对的goop会使其更长。

    找到这些文件的最佳方法是搜索所有.csproj/.vbproj文件中的字符串 ..\..\ . 看看结果如何。

        2
  •  0
  •   granadaCoder    14 年前

    您还需要考虑SVN的“backdrop”文件。

    虽然我可能有这样的短文件名: C:\myfolder1\myfolder2\myfile.txt文件

    可能有一个更长的文件名版本,比如: C:\myfolder1\myfolder2.svn\text base\myfile.txt.svn-base

    而这个背景文件就是那个得到“太长的路”错误的文件。

    下面是我使用SVN源代码管理通过ccnet(调用msbuild文件)得到的信息。 为了保护无辜而删除了特定的名字。(还有我的工作!)

    请注意,这种“名称按摩”会导致较短的路径,可能不会产生错误。aka,不要计算我的按摩示例中的字符数。 但是错误信息就是我得到的。

        Removing directory "C:\CCNETEnvironment\MyFolder2\MyProject\working\checkout".
        C:\src\MyFolder1\MyProject\My_MSBuild.xml(173,5): error MSB3231: Unable to remove directory "prop-base". The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
        C:\src\MyFolder1\MyProject\My_MSBuild.xml(173,5): error MSB3231: Unable to remove directory "text-base". The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
        C:\src\MyFolder1\MyProject\My_MSBuild.xml(173,5): error MSB3231: Unable to remove directory "prop-base". The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
        C:\src\MyFolder1\MyProject\My_MSBuild.xml(173,5): error MSB3231: Unable to remove directory "text-base". The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
        C:\src\MyFolder1\MyProject\My_MSBuild.xml(173,5): error MSB3231: Unable to remove directory "C:\CCNETEnvironment\MyFolder2\MyProject\working\checkout". Could not find a part of the path 'MyFile.txt.svn-base'.
    Done building target "Clean" in project "My_MSBuild.xml" -- FAILED.