Visual Studio - PathTooLongException, даже если длина пути меньше 260 символов

Я знаю, что максимальная длина пути, допустимая при создании проекта, составляет 260 символов и 248 символов для каталога. Но я получаю эту ошибку, даже если длина моего пути меньше 200 символов.

Мой файл решения находится в этой папке C:\Users\ username \ Documents \ Visual Studio 2010 \ Projects \ Health12.Domain12.WardManagement => 88 символов. Когда я пытаюсь добавить новую библиотеку классов с именем "Health12.Domain12.WardManagement.Service ". Контракт" к этому решению, это дает мне путь слишком длинное исключение.

C:\Users\ имя пользователя \ Documents \ Visual Studio 2010 \ Projects \ Health12.Domain12.WardManagement \ Health12.Domain12.WardManagement.Service.Contract => 138 символов

C:\Users\ имя пользователя \ Documents \ Visual Studio 2010 \ Projects \ Health12.Domain12.WardManagement \ Health12.Domain12.WardManagement.Service.Contract \ Health12.Domain12.WardManagement.Service.Contract.csproj => 195 символов

Ни один из возможных файлов или папок не превышает ограничение в 260 символов.

Если я изменю имя проекта с "Health12.Domain12.WardManagement.Service.Contract" на "Health12.Domain12.WardManagement.Service.Con", он будет работать нормально. Любая идея, почему Visual Studio не позволит создать проект, даже если он не пересекает максимально допустимую длину.

4 ответа

Решение

Длина пути в Visual Studio вычисляется следующим образом:

  1. Путь к решению: C:\Users\username\Documents\Visual Studio 2010\Projects\Health12.Domain12.WardManagement\ = 89 символов
  2. 2 * Название проекта: Health12.Domain12.WardManagement.Service.Contract\ = 50 символов
  3. Зарезервированные символы: дополнительные символы для файлов в проекте, скомпилированных файлов, временных файлов,... = 80 символов

В вашем случае: 89 + 2*50 + 80 = 269

Лимит 259 ((Drive char):\(256-character path)) (см. Имена файлов, путей и пространств имен)

Вы должны удалить 10 символов. Либо вы уменьшаете длину пути к проекту на 10 символов, либо удаляете 5 символов в имени проекта ("tract" например работает).

Этот предел является частью ядра Windows и вряд ли решаем. Я нашел обходной путь, который позволяет работать с путем с более чем 260 символов.

Отказ от ответственности: я попробовал этот трюк только на Windows 8 x64 и Visual Studio 2013

Итак, чтобы это работало, я просто создаю соединение с папкой с помощью команды mklink:

Предположим, что это исходный путь: папка d: \ very \ very \ long \ path \ to \ solution \, вы можете получить короткую ссылку в виде папки d:\short_path_to_solution_folder, просто запустив эту команду из оболочки dos от имени администратора:

mklink /J d:\short_path_to_solution_folder d:\very\very\long\path\to\solution\folder

изменить исходный и целевой путь в соответствии с вашими потребностями.

С уважением! Стельвио

Вы можете попробовать изменить установленное значение пути в regedit на значение 1 и увидеть, что это поможет. Он должен находиться в папке Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem>LongPathsEnabled Удачи!

Создайте папку в DESKTOP, а затем создайте свой проект с помощью Visual Studio в этой папке. После сохранения файла .sln вы можете переместить папку в исходный каталог, вы можете открыть файл .sln, который успешно запускается. Это сработало для меня.

Другие вопросы по тегам