2010-08-18 2 views
2

Я пытаюсь создать надстройку Visual Studio.Что может быть причиной исключения «Path Too Long»?

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

Ошибка System.IO.PathTooLongException Сообщение = Указанный путь, имя файла или оба слишком длинны. Полноценное имя файла должно быть менее 260 символов, а имя каталога должно быть меньше 248 символов. Источник = mscorlib StackTrace: на 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> 

ответ

1

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

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

+0

Спасибо за вашу помощь JaredPar, но как вы можете увидеть в моем редактируемом размещении выше, ни один из опорных путей не кажется необычно долго. – awj

0

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

Compare Broken vs. Fixed

Смежные вопросы