【问题标题】:What could be causing "Path Too Long" exception?什么可能导致“路径太长”异常?
【发布时间】:2010-08-18 17:17:41
【问题描述】:

我正在尝试构建 Visual Studio 加载项。

由于冗长的原因(与使用 .NET Reflector 提供的反汇编程序集有关),我删除了对 EnvDTE 程序集的引用,然后重新添加了它。我的项目仍然可以毫无问题地构建,但是当我运行我的项目时,出现以下异常。

发生 System.IO.PathTooLongException Message=指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符,目录名必须少于 248 个字符。 源=mscorlib 堆栈跟踪: 在 System.IO.PathHelper.GetFullPathName() 内部异常:

我的所有参考资料都没有特别长的路径 - 它们都是 GAC,而且长度大致相同。我没有尝试做任何与 EnvDTE 程序集遇到问题之前不同的事情。

有没有人知道可能是什么原因造成的以及如何解决?

更新: 我的 csproj 文件显示以下参考路径:

<ItemGroup>
    <Reference Include="BoneSoft.CSS">
      <HintPath>bin\BoneSoft.CSS.dll</HintPath>
    </Reference>
    <Reference Include="EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </Reference>
    <Reference Include="Extensibility, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <EmbedInteropTypes>False</EmbedInteropTypes>
    </Reference>
    <Reference Include="HtmlAgilityPack">
      <HintPath>bin\HtmlAgilityPack.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.OLE.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <Reference Include="Microsoft.VisualStudio.Shell, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
    <Reference Include="Microsoft.VisualStudio.Shell.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <Reference Include="microsoft.visualstudio.shell.interop.8.0, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <Reference Include="Microsoft.VisualStudio.Shell.Interop.9.0, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.CSharp" />
  </ItemGroup>

【问题讨论】:

    标签: visual-studio exception assemblies


    【解决方案1】:

    尝试在记事本中打开 .csproj 并查看所有程序集的参考条目。几乎可以肯定的是,它们添加了一个奇怪的相对路径,导致它超出了 HintPath 节点中 260 个字符的限制。

    要修复,只需删除 HintPath 元素,重新加载您的项目,问题就会消失。 EnvDTE 不需要。

    【讨论】:

    • 感谢 JaredPar 的帮助,但正如您在我上面编辑过的帖子中看到的那样,没有任何参考路径看起来异常长。
    【解决方案2】:

    在我的 Silverlight 5 项目中更新对 Telerik 程序集的引用后,我也遇到了这个问题。按照 JaredPar 的建议删除 HintPath 节点后,我的问题得到了解决。我在这里提供了一个屏幕截图,以显示损坏的版本(左侧)和修复的版本(右侧)。谢谢 JaredPar……抱歉,我还不能投票给你的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多