2010-08-18 6 views
2

J'essaie de créer un complément Visual Studio.Quelle pourrait être l'origine de l'exception "Path Too Long"?

Pour des raisons de longue durée (à propos de l'utilisation des assemblages désassemblés grâce à .NET Reflector), j'ai supprimé la référence à l'assemblage EnvDTE, puis je l'ai rajoutée. Mon projet se construit toujours sans aucun problème mais lorsque je lance mon projet, je reçois l'exception suivante.

System.IO.PathTooLongException s'est produite Message = Le chemin spécifié, le nom de fichier ou les deux sont trop longs. Le nom de fichier complet doit contenir moins de 260 caractères et le nom de répertoire doit contenir moins de 248 caractères. Source = mscorlib StackTrace: à System.IO.PathHelper.GetFullPathName() InnerException:

Aucun de mes références ont des chemins particulièrement longs - ils sont tous à peu près le GAC et la même longueur. Je n'essaie pas de faire quelque chose de différent avant d'avoir des problèmes avec l'assemblage EnvDTE.

Est-ce que quelqu'un a des idées sur ce qui pourrait être à l'origine de ce problème et comment cela peut-il être résolu?

MISE À JOUR: Mon fichier csproj montre les chemins de référence suivants:

<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> 

Répondre

1

ouverture Essayez votre .csproj dans le bloc-notes et regarder les entrées de référence pour toutes vos assemblées. Ce qui est presque certainement arrivé, c'est qu'ils ont été ajoutés avec un chemin relatif étrange qui l'a fait dépasser la limite de 260 caractères dans le nœud HintPath.

Pour corriger simplement supprimer l'élément HintPath, rechargez votre projet et le problème devrait disparaître. Ce n'est pas nécessaire pour EnvDTE.

+0

Merci pour votre aide JaredPar, mais comme vous pouvez le voir dans mon message édité ci-dessus, aucun des chemins de référence semblent être anormalement longue. – awj

0

J'ai également rencontré ce problème après la mise à jour des références aux assemblys Telerik dans mon projet Silverlight 5. Après avoir supprimé les nœuds HintPath comme suggéré par JaredPar, mon problème a été résolu. Je fournis une capture d'écran ici pour montrer la version cassée (à gauche) et la version corrigée (à droite). Merci JaredPar ... désolé, je ne peux pas encore voter pour votre réponse.

Compare Broken vs. Fixed

Questions connexes