我正在尝试构建一个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>
答案 0 :(得分:1)
尝试在记事本中打开.csproj并查看所有程序集的参考条目。几乎可以肯定的是,他们添加了一个奇怪的相对路径,导致它延伸超过HintPath节点中的260个字符限制。
要修复只删除HintPath元素,请重新加载项目,问题应该消失。 EnvDTE没有必要。
答案 1 :(得分:0)
在我的Silverlight 5项目中更新对Telerik程序集的引用后,我也遇到了这个问题。在JaredPar建议删除HintPath节点后,我的问题得到了解决。我在这里提供一个屏幕截图来显示破损版本(左侧)和固定版本(右侧)。谢谢JaredPar ...抱歉,我还不能投票给你答案。