Что может быть причиной исключения «Путь слишком длинный»? - PullRequest
2 голосов
/ 18 августа 2010

Я пытаюсь создать надстройку Visual Studio.

По многим причинам (для использования разобранных сборок любезно предоставлено .NET Reflector) я удалил ссылку на сборку EnvDTE, а затем снова добавил ее. Мой проект по-прежнему создается без каких-либо проблем, но когда я запускаю свой проект, я получаю следующее исключение.

Произошло исключение System.IO.PathTooLongException Сообщение = указанный путь, имя файла или оба они слишком длинные. Полное имя файла должно быть не более 260 символов, а имя каталога должно быть не более 248 символов. Источник = mscorlib Трассировки стека: в System.IO.PathHelper.GetFullPathName () InnerException:

Ни одна из моих ссылок не имеет особенно длинных путей - они все GAC и примерно одинаковой длины. Я не пытаюсь сделать что-то отличное от того, что было до того, как у меня возникли проблемы со сборкой EnvDTE.

У кого-нибудь есть идеи, что может быть причиной этого и как его можно решить?

UPDATE: Мой файл 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 ]

1 голос
/ 18 августа 2010

Попробуйте открыть свой .csproj в блокноте и посмотрите справочные записи для всех ваших сборок. Почти наверняка произошло то, что к ним добавили странный относительный путь, который заставил его превысить ограничение в 260 символов в узле HintPath.

Чтобы исправить это, просто удалите элемент HintPath, перезагрузите ваш проект, и проблема должна исчезнуть. Это не обязательно для EnvDTE.

0 голосов
/ 03 ноября 2013

У меня тоже была эта проблема после обновления ссылок на сборки Telerik в моем проекте Silverlight 5. После удаления узлов HintPath, как предложил JaredPar, моя проблема была решена. Я предоставляю снимок экрана здесь, чтобы показать сломанную версию (слева) и исправленную версию (справа). Спасибо, ДжаредПар ... извините, я пока не могу проголосовать за ваш ответ.

Compare Broken vs. Fixed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...