什么可能导致“路径太长”的例外?

时间:2010-08-18 17:17:42

标签: visual-studio exception assemblies

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

由于啰嗦的原因(使用.NET Reflector提供的反汇编程序集)我删除了对EnvDTE程序集的引用,然后重新添加它。我的项目仍然没有任何问题,但是当我运行我的项目时,我得到以下异常。

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

我的参考文献都没有特别长的路径 - 它们都是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>

2 个答案:

答案 0 :(得分:1)

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

要修复只删除HintPath元素,请重新加载项目,问题应该消失。 EnvDTE没有必要。

答案 1 :(得分:0)

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

Compare Broken vs. Fixed