Имя исходного каталога макета слишком длинное visual studio
The text was updated successfully, but these errors were encountered:
ghost commented Jun 20, 2014
Какое поведение ты ожидаешь ?
Может пока укоротишь наименование тестов ?
artbear commented Jun 20, 2014
В описании задачи я описал свои предложения
- для макетов генерить файлы сразу в папке Макеты, без создания доп.вложенного каталога
- если оставляем вложенный каталог, тогда имя файла делать коротким, например, 1.mxl , т.к. все равно имя макета задано в имени каталога.
ИМХО сокращать наименования тестов = "прятать голову в песок", т.к. в этом случае мы просто маскируем проблему. В дальнейшем она также может выскочить по разным причинам у разных пользователей (например, репо развернут на длинном пути)
Мне нравится вариант 1, т.к. имя макета у нас всегда уникально.
Мне пока непонятно, почему Женя реализовал именно вариант дублей имен макетов.
pumbaEO commented Jun 20, 2014
Попробуй добавить настройку в git. Уменьшать нужно - это понятно, как
быстрый bugfix для 2008
|git config core.longpaths true
|
20.06.2014 18:01, artbear пишет:
- для макетов генерить файлы сразу в папке Макеты, без создания
доп.вложенного каталога - если оставляем вложенный каталог, тогда имя файла делать коротким,
например, |1.mxl|, т.к. все равно имя макета задано в имени каталога.
artbear commented Jun 20, 2014
Женя, настройка git config core.longpaths true что дает?
artbear commented Jun 20, 2014
Насколько я понимаю, эта настройка работает с 1.9.0 и выше
А как выяснили, народ каких только Гит не юзает :(
artbear commented Jun 20, 2014
Возможное исправление настройки Гит это возможное решение части проблем.
Но ведь еще и v8Reader, который выдает ошибку на длинных именах.
ИМХО это нужно решать сначала.
pumbaEO commented Jun 21, 2014
Более точна ссылка на git - commit пытающийся решить проблему.
msysgit/git@8439375
Для v83unpack я эмперическим путем определил, что название каталога не
должно быть больше 63 символов, тогда на win платформе git будет
переваривать репозитарий.
20.06.2014 18:21, artbear пишет:
Возможное исправление настройки Гит это возможное решение части проблем.
Но ведь еще и v8Reader, который выдает ошибку на длинных именах.
ИМХО это нужно решать сначала.—
Reply to this email directly or view it on GitHub.
artbear commented Jun 21, 2014
artbear commented Jun 21, 2014
Я уже как-то задавал вопрос - кто сейчас пилит v8Reader ? у кого последние правки?
У нас в сабже, у автора или еще кого?
artbear commented Jun 21, 2014
ghost commented Jun 21, 2014
По ссылке Жени, это не баг v8reader
as long paths are not supported by Windows Explorer
это мы нарываемся на баг, недочет Windows.
Ты слишком длинно называешь тесты. Даже если мы будем использовать обновлять всем GIT до максимальной версии. Тогда люди в Проводнике не увидят файлов по таким длинным путям. И в консоли не увидят.
Windows paths are typically limited to MAX_PATH = 260 character
Данный баг можно Windows можно только обойти. Остается решить вопрос как.
Очередной раз предложу тебе использовать другое правило именования тестов.
ghost commented Jun 21, 2014
должно быть больше 63 символов, тогда на win платформе git будет
переваривать репозитарий.
скорее всего это еще связанно с русскими символами в наименовании. английский путь был бы длинней. Видимо русские символы кодируются несколькими байтами (или чего там в внутри WinAPI)
Видимо использование русских символов сокращает этот размер.
У нас используется cmd для выгрузки, значит на нас действуют его правила.
Тогда опять же мы приходим к тому, что длинна названия обработки epf и erf в случае использования русских символов не должны быть большой или на английском
pumbaEO commented Jun 22, 2014
artbear commented Jun 22, 2014
- обнаружил, что на моем домашнем репозитарии не установлен precommit1C
- установил последнюю версию precommit1c 1.1
но при этом во время разбора в 1С:Предприятии была ошибка
ошибка была следующая:
: Ошибка при вызове метода контекста (КопироватьФайл) КопироватьФайл(ФайлМакетаИсходный.ПолноеИмя, ПутьНовый); по причине: Ошибка копирования файлов по причине: Ошибка копирования файлов из 'C:\Users\1\AppData\Local\Temp\ТестыГенератораДанных1CUnit.epf473.und\f519cbc0-1404-4ef3-9377-16955dc46254.0' в 'C:\Projects\GitHub\xUnitFor1C\src\Тесты\ТестыГенератораДанных1CUnit\Макеты\Тест_ДолженПолучитьИсключениеПриПопыткеСоздатьЭлементИЗаполнитьРеквизитПоНеверномуНаименованию\Тест_ДолженПолучитьИсключениеПриПопыткеСоздатьЭлементИЗаполнитьРеквизитПоНеверномуНаименованию.mxl' : Каталог не обнаружен
Сразу видно, что имя макета дублируется ДВАЖДЫ-ДВАЖДЫ
C:\Projects\GitHub\xUnitFor1C\src\Тесты\ТестыГенератораДанных1CUnit\Макеты
Тест_ДолженПолучитьИсключениеПриПопыткеСоздатьЭлементИЗаполнитьРеквизитПоНеверномуНаименованию
Тест_ДолженПолучитьИсключениеПриПопыткеСоздатьЭлементИЗаполнитьРеквизитПоНеверномуНаименованию.mxl
Напоминаю, что сабж вместе с xUnitFor1C мы юзаем довольно давно, подобных проблем не было ни разу !!
А вот после использования НОВОЙ-НОВОЙ версии появились проблемы.
Логично, что проблемы в новой-новой версии, а не только, и не столько в именах тестов.
ЗЫ я устал уже доказывать простейший баг. Что еще нужно написать, чтобы вы увидели проблему в целом и в частностях, а не только в длинных именах ?
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
Узнайте, как настроить окна в Visual Studio для создания макетов, которые оптимально подходят для рабочих процессов разработки.
Настройка макетов окон в Visual Studio
В Visual Studio можно настроить расположение, размер и поведение окон, что позволит создать макеты окон, оптимально подходящие для различных рабочих процессов разработки. После того как макет будет настроен, интегрированная среда разработки запомнит его. Например, если после изменения места прикрепления окна обозревателя решений закрыть Visual Studio, во время следующего открытия Visual Studio окно обозревателя решений будет закреплено в том же месте, даже если работа будет продолжена на другом компьютере.
Можно также присвоить настраиваемому макету имя, сохранить его, а затем переключаться между макетами с помощью одной команды. Например, можно создать один макет для редактирования, а другой — для отладки и переключаться между ними с помощью команды меню Окно > Применить макет окна.
Окна инструментов и документов
В среде IDE существует два основных типа окон: окна инструментов и окна документов. В число окон инструментов входят обозреватель решений, обозреватель сервера, окно вывода, список ошибок, конструкторы, окна отладчика и т. д. Окна документов содержат файлы исходного кода, произвольные текстовые файлы, файлы конфигурации и т. д. Изменять размер и перетаскивать окна инструментов можно с помощью их строки заголовка. Перетаскивание окон документов осуществляется с помощью вкладки. Правой кнопкой мыши щелкните вкладку или строку заголовка, чтобы задать другие параметры для окна.
В меню Окно находятся параметры закрепления, перемещения и скрытия окон в интегрированной среде разработки. Щелкните правой кнопкой мыши вкладку или строку заголовка окна, чтобы просмотреть дополнительные параметры для этого конкретного окна. Одновременно можно отображать несколько экземпляров окон инструментов. Например, можно открыть несколько окон веб-браузера. Кроме того, можно создать дополнительные экземпляры некоторых окон инструментов, выбрав команду Создать окно в меню Окно .
Если в документе необходимо одновременно просмотреть или изменить два различных места, можно разделить окна. Чтобы разделить документ на две части с независимой прокруткой, выберите Разделить в меню Окно . Чтобы восстановить единое представление, выберите Снять разделение в меню Окно .
С помощью вкладок вы можете размещать макеты различными способами. Например, можно предварительно просматривать файл в редакторе, не открывая файл, группировать вкладки и выполнять многие другие задачи.
Вкладка предварительного просмотра (окна документов)
На вкладке Предварительный просмотр можно просматривать файлы в редакторе, не открывая их. Просмотреть файлы можно путем их выбора в обозревателе решений, во время отладки при заходе в файлы, с помощью команды Перейти к определению, а также при просмотре результатов поиска. Файлы для предварительного просмотра отображаются на вкладке в правой части вкладки документа. Файл становится доступным для редактирования при его изменении или выборе команды Открыть.
Вертикальные вкладки документов
Новые возможности Visual Studio 2019 версии 16.4 и более поздних : мы добавили одну из наиболее часто запрашиваемых функций — вертикальные вкладки документов. Теперь вы можете управлять вкладками документов в вертикальном списке в левой или правой части редактора.
Вертикальные вкладки документов можно применить следующими способами:
Последовательно выберите элементы Средства > Параметры > Среда > Вкладки и окна в строке меню. Затем в раскрывающемся списке Задать макет вкладки выберите элемент Сверху, Слева или Справа.
Щелкните вкладку правой кнопкой мыши, выберите команду Задать макет вкладки и щелкните элемент Слева или Справа (чтобы вернуть вкладки в расположение по умолчанию, выберите элемент Сверху).
. image type="content" source="./media/vs-2019/vertical-tabs.jpg" alt-text="Анимация, на которой показано использование вертикальных вкладок документов".
Цветные вкладки документов
В Visual Studio 2022 доступны новые параметры персонализации, которые можно использовать для повышения эффективности кода. Мы добавили запрос на еще одну популярную функцию: вкладки документов цвета. Теперь вы можете выделить цветом вкладки файлов по проектам, чтобы упростить поиск открытых файлов.
[!NOTE] Чтобы использовать цветные вкладки, перейдите в меню Сервис > Параметры > Среда > Вкладки и окна и выберите параметр Выделить цветом вкладки документов по проекту.
Далее приведены актуальные обновления:
Новые возможности Visual Studio 2022 версии 17.0 и более поздних версий : теперь можно выделить цветом вкладки как в вертикальном, так и в горизонтальном представлении редактора.
На следующем снимке экрана показан пример цветных вкладок в вертикальном представлении:
. image type="content" source="media/vs-2022/color-tabs-vertical.jpg" alt-text="Снимок экрана: цветные вкладки в вертикальном представлении.".
На следующем снимке экрана показан пример цветных вкладок в горизонтальном представлении:
. image type="content" source="media/vs-2022/color-tabs-horizontal.jpg" alt-text="Снимок экрана: цветные вкладки в горизонтальном представлении.".
Новые возможности Visual Studio 2022 версии 17.1 и более поздних версий : вы также можете выбрать собственные цвета для вкладок. Для этого щелкните вкладку правой кнопкой мыши и выберите пункт Настроить цвет вкладки, чтобы выбрать цвет на палитре.
На следующем снимке экрана показан пример персонализации цветовой схемы для вкладок:
. image type="content" source="media/vs-2022/color-tabs-personalize-schemes.jpg" alt-text="Снимок экрана, где показан параметр настройки вкладки, который можно использовать для персонализации цветов вкладок.".
Группы вкладок расширяют возможности управления ограниченной рабочей областью при работе с двумя или более открытыми документами в интегрированной среде разработки. Несколько окон документов и окон инструментов можно упорядочить в вертикальные или горизонтальные группы вкладок и затем без труда переносить документы из одной группы в другую.
Вы можете разместить панели инструментов требуемым образом, перетащив их в нужное расположение, или используя диалоговое окно Настройка. Дополнительные сведения о размещении и настройке панелей инструментов см. в статье Практическое руководство. Настройка меню и панелей инструментов.
Размещение и закрепление окон
Окно документов или окно инструментов можно закрепить, чтобы задать для них расположение и размер в рамках окна среды IDE. Либо вы можете сделать эти окна плавающими, то есть независимыми от IDE.
Окно инструментов можно закрепить в любом расположении в пределах фрейма IDE. Вы можете закрепить некоторые окна инструментов в виде окон с вкладками в фрейме редактора. Также вы можете закрепить окна документов в пределах фрейма редактора либо в текущем расположении в последовательности перехода.
Кроме того, можно закрепить несколько окон для совместного перемещения в среде IDE или за ее пределами. Окна инструментов можно скрывать или сворачивать.
Существуют следующие способы размещения окон.
Закрепление окон документов в левой части вкладки.
Прикрепление окон в виде вкладок к области редактирования.
Закрепление окон инструментов по краю области интегрированной среды разработки.
Перемещение окно документов или окно инструментов по интегрированной среде разработки или за ее пределами.
Скрытие окон инструментов вдоль края интегрированной среды разработки.
Отображение окон на разных мониторах.
Сброс расположения окон до макета по умолчанию или до сохраненного настраиваемого макета.
Чтобы расположить окна инструментов и документов, поместите указатель в строку заголовка окна и перетащите его в нужное расположение. Также можно щелкнуть заголовок окна правой кнопкой мыши, чтобы использовать его контекстное меню, либо применить команды в меню Окно.
При щелчке и перетаскивании строки заголовка окна инструмента или вкладки окна документа появляется маркер в виде ромба. Во время операции перетаскивания, когда указатель мыши наведен на одну из стрелок в ромбе, будет отображена затененная область, показывающая место закрепления окна после отпускания кнопки мыши.
Чтобы переместить закрепляемое окно без прикрепления к месту, во время перетаскивания окна нажмите клавишу CTRL.
Чтобы вернуть окно инструмента или окно документа в последнее место закрепления, нажмите клавишу CTRL во время выполнения двойного щелчка по заголовку или вкладке окна.
На следующем рисунке показан маркер в виде ромба для окон документов, которые могут быть закреплены только в рамках области редактирования.
Окна инструментов можно прикрепить к одной стороне рамки в интегрированной среде разработки или в пределах области редактирования. Маркер в виде ромба появляется при перетаскивании окна инструмента в другое место и упрощает процесс закрепления.
На следующем рисунке показан обозреватель решений, закрепленный в новом месте, выделенном синим цветом:
Закрытие и автоматическое скрытие окон инструментов
Чтобы закрыть окно инструментов, нажмите кнопку X в верхнем правом углу заголовка окна. Для повторного открытия окна используйте соответствующее сочетание клавиш или команду меню. Окна инструментов поддерживают возможность автоматического скрытия, позволяющую выводить окно из поля зрения при использовании другого окна. Если окно автоматически скрыто, его имя отображается на вкладке на краю интегрированной среды разработки. Для повторного использования окна наведите указатель на вкладку, в результате чего окно возвращается обратно в представление.
[!NOTE] Окна инструментов, для которых включена функция автоматического скрытия, могут временно становиться видимыми, когда они находятся в фокусе. Чтобы снова скрыть окно, выберите элемент за пределами текущего окна. При потере фокуса окно скрывается.
Использование второго монитора
Если имеется второй монитор, который поддерживается операционной системой, можно выбрать, в каком мониторе будет отображаться окно. Можно даже сгруппировать несколько окон в блоки на других мониторах.
[!TIP] Можно создать несколько экземпляров обозревателе решений и переместить их на другой монитор. Щелкните окно правой кнопкой мыши и выберите команду Создать представление обозревателя решений. Все окна можно вернуть на исходный монитор, щелкнув их дважды, удерживая нажатой клавишу CTRL.
Сброс, задание имен и переключение между макетами окон
Для возвращения исходного макета окон интегрированной среды разработки используется команда Сбросить макет окон . При запуске этой команды выполняются следующие действия.
Все окна перемещаются в расположения по умолчанию.
Окна, которые закрыты в макете по умолчанию, закрываются.
Окна, которые открыты в макете по умолчанию, открываются.
Создание и сохранение пользовательских макетов
Visual Studio позволяет сохранять до 10 пользовательских макетов окон и быстро переключаться между ними. В приведенных ниже инструкциях показано, как создавать, сохранять, вызывать пользовательские макеты, использующие несколько мониторов как с закрепленными окнами средств, так и с перемещаемыми, а также управлять ими.
Сначала создайте тестовое решение с двумя проектами, каждый с отдельным оптимальным макетом.
Создание проекта пользовательского интерфейса и настройка макета
Если у вас несколько мониторов, переместите окна Обозреватель решений и Свойства на второй монитор. В системе с одним монитором закройте все окна, кроме окна конструктора.
Нажмите клавиши CTRL+ALT+X, чтобы отобразить окно Панель элементов. Если окно закреплено, перетащите его в нужное место.
Нажмите клавишу F5, чтобы включить в Visual Studio режим отладки. Настройте расположение окон отладки Автоматические, Стек вызовов и Выходные данные. Макет, который вы собираетесь создать, применит к ним режим редактирования и режим отладки.
Когда макеты будут открыты в режиме отладки и редактирования, выберите Окно > Сохранить макет окна. Назовите этот макет "Конструктор".
Обратите внимание, что новому макету назначается сочетание клавиш из зарезервированного списка CTRL+ALT+1. 0.
Создание проекта и макета базы данных
Добавьте в решение новый проект База данных SQL Server .
Щелкните правой кнопкой мыши новый проект в обозревателе решений и выберите пункт Просмотр в обозревателе объектов. Отобразится окно Обозреватель объектов SQL Server , в котором можно открывать таблицы, представления и другие объекты в базе данных. Это окно можно переместить или оставить закрепленным. Настройте другие окна средства. Для реалистичности можно добавить существующую базу данных, но это необязательно для данного пошагового руководства.
После настройки макета выберите в главном меню пункт Окно > Сохранить макет окна. Назовите этот макет "Проект базы данных". (Для этого проекта не будет использоваться макет в режиме отладки.)
Переключение между макетами
Для переключения между макетами используйте сочетания клавиш или выберите в главном меню пункт Окно > Применить макет окна.
После применения макета пользовательского интерфейса обратите внимание на то, как выглядит макет в режиме редактирования и в режиме отладки.
Если у вас установлено несколько мониторов на работе и один ноутбук дома, можно создать макеты, оптимизированные для всех компьютеров.
[!NOTE] Если макет для нескольких мониторов применить в системе с одним монитором, плавающие окна на втором мониторе будут находиться за окном Visual Studio. Эти окна можно переместить на передний план, нажав клавиши ALT+TAB. Если позже открыть Visual Studio в системе с несколькими мониторами, можно восстановить окна в указанных расположениях, повторно применив макет.
Управление макетами и перемещение их
Пользовательский макет можно удалить, переименовать или переупорядочить. Для этого последовательно выберите элементы Окно > Управление макетами окон. Если переместить макет, привязка ключей будет настроена автоматически и отобразит новое положение в списке. Привязки нельзя изменить другим способом. Таким образом, одновременно можно хранить не больше 10 макетов.
Чтобы вспомнить, какие сочетания клавиш назначены макетам, выберите Окно > Применить макет окна.
Эти макеты автоматически передаются между выпусками Visual Studio, между экземплярами Blend на отдельных компьютерах и из любого выпуска Express в любую другую организацию Express. Но макеты нельзя перемещать между Visual Studio, Blend и Express.
Если вы когда-либо видели эту проблему, это, вероятно, было простым решением для вас. Если вы видели эту ошибку более двух раз, то вы также знаете, что иногда это может быть сложной проблемой.
Будем надеяться, что вы столкнетесь только с набором легких исправлений, но мы подготовим вас к менее простым, гарантированно исправным исправлениям.
Почему длина имени файла является проблемой в Windows?
Существует большая история длины файлов, что является проблемой для операционных систем, таких как Windows. Было время, когда вы не могли иметь имена файлов длиннее 8 символов плюс 3-символьное расширение файла. Лучшее, что вы могли сделать, это что-то вроде myresume.doc. Это было ограничение в отношении дизайна файловой системы.
Все стало лучше, когда вышли новые версии Windows. Мы перешли от старой ограниченной файловой системы к так называемой файловой системе новой технологии (NTFS). NTFS привела нас к тому, что имя файла может быть длиной 255 символов, а длина пути к файлу потенциально может достигать 32 767 символов. Так как же мы можем иметь слишком длинные имена файлов?
В Windows есть вещи, известные как системные переменные. Это переменные, от которых зависит функционирование Windows, потому что Windows всегда будет знать, что означают переменные и где они находятся, даже когда мы перемещаем биты и байты повсюду. Системная переменная MAX_PATH — это та, которая ограничивает имена файлов и пути к файлам до 260 символов.
Будучи переменной, вы думаете, мы могли бы изменить это. Нет, мы не должны. Это все равно что выдернуть нитку из свитера. Как только одна системная переменная изменяется, другие системные переменные и зависимые от них компоненты начинают распадаться.
Настройка Windows 10 на обработку длинных путей к файлам
Если вы знаете, что будете часто использовать длинные пути к файлам и длинные имена файлов, вам будет проще заставить Windows работать. Нет смысла использовать PowerShell для выполнения работы каждый день.
Есть два способа сделать это. Один предназначен для пользователей Windows 10 Home, а другой — для пользователей Windows 10 Pro или Enterprise. Эти методы могут работать для Windows 8.1 или более ранней версии, но мы не можем гарантировать это.
Параметры для Windows 10 Home
Чтобы Windows 10 Home принимала длинные пути к файлам, нам нужно открыть редактор реестра . Если вы раньше не работали в редакторе реестра, будьте осторожны. Случайное удаление или изменение здесь может помешать работе Windows полностью.
Всегда делайте резервную копию вашего реестра, прежде чем вносить какие-либо изменения. Узнайте все, что вам нужно знать об этом, в нашем окончательном руководстве по резервному копированию и восстановлению реестра Windows.
Открыв редактор реестра и сделав резервную копию, перейдите в папку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem и найдите ключ LongPathsEnabled.
Дважды щелкните LongPathsEnabled. Убедитесь, что в поле Значение данные: номер 1 указан. Нажмите OK, чтобы подтвердить изменения.
Выйдите из редактора реестра, и теперь вы сможете работать с безумными длинными путями к файлам.
Параметры для Windows 10 Pro или Enterprise
Чтобы позволить Windows 10 Pro или Enterprise использовать длинные пути к файлам, мы будем использовать редактор локальной групповой политики. Это инструмент, который позволяет нам устанавливать политики в отношении работы Windows на компьютере и на уровне пользователей.
Откройте редактор групповой политики, перейдя в меню «Пуск» и набрав gpedit . Лучший результат должен быть Изменить групповую политику. Дважды щелкните по этому.
После открытия редактора групповой политики перейдите к Конфигурация компьютера → Административные шаблоны → Система → Файловая система. Там вы увидите политику включения длинных путей Win32.
Дважды щелкните по нему, чтобы изменить параметр политики. Измените его с «Отключено» на «Включено», затем нажмите кнопку «ОК», чтобы зафиксировать изменение.
Политика может не вступить в силу сразу. Вы можете принудительно обновить групповую политику.
Легкое Исправление
Если вам повезет, вы получите ошибку и точно знаете, какое имя файла вызывает проблему. Или, по крайней мере, где найти файл. Может быть, у вас есть имя файла, которое выглядит примерно так:
Понятно, кто в этом случае виновник. Найдите файл в проводнике Windows или в проводнике, как он называется в Windows 10, нажмите один раз на него, нажмите F2, чтобы переименовать его, и измените это глупое имя файла на более разумное. Задача решена.
Менее простые исправления
Не всегда легко решить эту проблему. Иногда вы не можете изменить имена файлов или каталогов по любой причине.
Следующие решения помогут вам. Их несложно сделать.
Обратите внимание, что слова каталог и папка являются взаимозаменяемыми. Мы будем использовать «каталог» в будущем. Следующие командлеты PowerShell также можно использовать для файлов.
Возможно, путь к файлу выглядит примерно так:
Этот путь к файлу составляет 280 символов. Поэтому мы не можем скопировать каталог оттуда куда-либо еще с помощью обычного метода копирования-вставки. Мы получаем ошибку Destination Path Too Long.
Давайте предположим, что по какой-то причине мы не можем переименовать каталоги, в которые вложен файл. Что мы делаем?
Когда откроется PowerShell, вы окажетесь в корне своего пользовательского каталога. Продолжайте, предполагая, что C:\Users\guymc — ваш пользовательский каталог.
Каталог с именем This находится в каталоге Documents. Чтобы перейти в каталог Documents, мы используем команду cd Documents .
Вы увидите быстрое изменение текущего каталога на C:\Users\guymc\Documents. Это хорошо. Мы работаем ближе к каталогам, которые облегчат жизнь.
Копирование каталога с использованием Copy-Item
Мы хотим скопировать каталог This и его содержимое в ThatNewFolder. Давайте используем команду PowerShell Copy-Item с параметрами -Destination и -Recurse.
-Destination сообщает PowerShell, где мы хотим, чтобы копия находилась. -Recurse говорит PowerShell скопировать все элементы внутри к месту назначения. Копирование оставляет оригиналы там, где они есть, и делает все новые в месте назначения.
Переместить каталог с помощью Move-Item
Допустим, мы хотим переместить каталог This, а также все каталоги и файлы в нем, в ThatNewFolder. Перемещение не оставляет оригинал на месте.
Мы можем использовать команду PowerShell Move-Item с параметрами -Path и -Destination. -Path определяет элемент, который мы хотим переместить, и -Destination сообщает PowerShell, где мы хотим его получить.
Команда поместит это в ThatNewFolder. Он также будет перемещать все, что находится внутри этого каталога. Move-Item может использоваться для перемещения файлов или каталогов, и он работает независимо от пути к файлу или длины имени файла.
Чтобы убедиться, что это работает, используйте команду cd ThatNewFolder , чтобы войти в ThatNewFolder. Затем используйте команду dir для вывода списка каталогов в ThatNewFolder. Вы увидите, что этот каталог находится там.
Удалить каталог с помощью Remove-Item
Если мы хотим удалить этот каталог и все в нем, мы используем команду Remove-Item.
Командлет Remove-Item обладает некоторой встроенной безопасностью, которая затрудняет удаление каталога с содержимым внутри него. В нашем примере мы знаем, что хотим удалить все, поэтому мы будем использовать параметры -Recurse, чтобы заставить его удалять все внутри, и -Force, чтобы он делал это, не спрашивая нас, уверены ли мы в каждом элементе внутри.
Имейте в виду! Восстановить что-либо удаленное таким образом было бы чрезвычайно сложно.
Вы можете снова использовать команду dir, чтобы убедиться, что она пропала.
Вот и все
Существуют и другие способы обхода длинных имен файлов и путей к файлам, но то, что мы здесь рассмотрели, — это самые простые и эффективные методы.
Многим пользователям ПК под управлением ОС Windows, не говоря о разработчиках, знакомы проблемы при работе с длинными (более 260 символов, MAX_PATH) путями файлов или каталогов.
Приложения Win API
В приложениях, которые используют Win API для работы с файлами, рецепт избавления от ограничения MAX_PATH был известен с незапамятных времён – необходимо было использовать Unicode версию функции с окончанием «W» для работы с директорией или файлом и начинать путь с префикса \\?\. Это давало возможность использовать пути длинной до 32767 символов.
В Windows 10 (1607) поведение функций для работы с файлами изменилось: появилась возможность отключить проверку ограничений MAX_PATH на уровне системы.
Для работы с каталогами: CreateDirectoryW, CreateDirectoryExW, GetCurrentDirectoryW, RemoveDirectoryW, SetCurrentDirectoryW. И для работы с файлами: CopyFileW, CopyFile2, CopyFileExW, CreateFileW, CreateFile2, CreateHardLinkW, CreateSymbolicLinkW, DeleteFileW, FindFirstFileW, FindFirstFileExW, FindNextFileW, GetFileAttributesW, GetFileAttributesExW, SetFileAttributesW, GetFullPathNameW, GetLongPathNameW, MoveFileW, MoveFileExW, MoveFileWithProgressW, ReplaceFileW, SearchPathW, FindFirstFileNameW, FindNextFileNameW, FindFirstStreamW, FindNextStreamW, GetCompressedFileSizeW, GetFinalPathNameByHandleW.
Это избавляет от необходимости использовать префикса \\?\ и потенциально даёт шанс приложениям, работающим напрямую или косвенно через Win API, получить поддержку длинных путей без необходимости их пересборки. Как активировать эту возможность описано в конце статьи.
Тут поддержку длинных путей анонсировали ещё в ноябре 2015 года. Видимо сказалось Open Source природа проекта и отсутствие строгой необходимости обеспечения обратной совместимости.
Вот тут можно посмотреть пример.
Как включить поддержку длинных путей в Windows 10 (1607)
Эта возможность по умолчанию отключена. Это объясняется тем, что данная функция является экспериментальной, и имеется необходимость дорабатывать различные подсистемы и приложения для полной поддержки.
Включить встроенную поддержку длинных путей можно создав или изменив следующий параметр системного реестра: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem Параметр LongPathsEnabled (Тип: REG_DWORD) 1 – соответствует значению включено.
Или через групповые политики (Win+R\gpedit.msc) Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths.Оно же в локализованном варианте: Конфигурация компьютера > Административные шаблоны > Система > Файловая система > Включить длинные пути Win32.
Далее источники расходятся во мнении относительно манифеста (или я неправильно понял, но на данный момент проверить не имею возможности). Например, в документации MSDN написано, что манифест можно использовать в качестве альтернативного способа активации поддержки длинных путей в отдельных приложениях, а в блоге MSDN указано, что это является вторым обязательным шагом после активации в политиках.
Но они сходятся в формате задания данной опции:
С CMD, к сожалению, это не сработает, на данный момент, из-за особенностей работы с путями, а в PowerShell должно всё заработать.
На этом мой небольшой пятничный пост заканчивается, оставив за рамками вопросы полноты реализации поддержки длинных путей в Windows 10 (1607), или работоспособность при использовании различных комбинаций редакций Windows, файловых систем и API. По мере поступления новых фактов и результатов экспериментов пост будет обновляться.
Проблема в том, что я могу без проблем собрать его в VS2010.
Согласно MSDN эта ошибка отображается, когда имя файла с путем длиннее 260 символов. Собственно 156.
Итак, два вопроса:
Почему это работает в VS2010, а не в 2012 году?
Как я могу решить эту проблему в VS2012?
Я не могу этого сделать, потому что это запрещено . Это находится в системе контроля версий, и есть некоторые правила.
ошибка, вероятно, сократила путь к вашей ошибке, .. недействительное имя папки, поэтому да, вероятно,> 260 символов. Где вы получаете эту ошибку?
вы можете указать путь к файлу, который вы используете, к своему вопросу? не стесняйтесь запутывать его сколько хотите, заменяя символы разными символами, но не меняя формат (т.е. меняйте буквы на другие буквы, но не на косые черты, точки, дефисы и т. д.)
Это известная проблема. Имена файлов не могут быть бесконечно длинными. Вам необходимо изменить свои соглашения об именах. Откровенно говоря, имя FooBarBaz.Portfolio.Core.Providers.ScheduledTaskProviders .foobarbazSearchAlerting.XML - это садомазохизм вычислений.
Чтобы избежать этого, я сопоставляю свои ветки системы управления версиями с простым c: \ DEV \ Branch_Name.
Вам определенно нужно обсудить этот вопрос со своей командой и попытаться изменить свои шаблоны именования и папок. Я бы сказал, что у файла должно быть не более 3-х частичных имен. Company.Product.Business
Это может вам помочь
Этот проект создавался и проектировался не мной, поэтому я понимаю ваше предложение. Но если он недействителен, как он может работать в VS2010?
Я добавил информацию в ответ. У меня была эта проблема раньше в VS2010. "проект был создан и спроектирован не мной" - теперь вы отвечаете: o)
Ядро Windows / NTFS поддерживает пути длиной примерно 32 000 символов и 255 на компонент пути. В современной операционной системе и файловой системе нет смысла ограничивать путь до 260 символов. Эквивалент для файловой системы: «нам когда-либо понадобится всего 4 КБ памяти». В наши дни мы не должны ограничиваться C: \ DEV \ для базовой папки и задним числом применять ограниченные соглашения об именах к проблемам, созданным этим ограничением.
@Shiv Хорошо. Так о чем вы здесь говорите? Несмотря на это, у Visual Studio по-прежнему возникают проблемы с длинными путями. Кроме того, если вы называете свой проект FooBarBaz.Core.Providers.ScheduledTaskProviders , вам лучше подумать о его переделке. Это действительно должно быть Company.Product.Module и как можно короче
Просто регресс, что VS2012 имеет более низкий предел, чем VS2010, и нелогичное направление движения платформы. В комментарии указывалось, что процесс выяснения этого ограничения идет в обратном направлении (вы часто довольно глубоко в разработке продукта, вообще говоря, чтобы получить такие длинные пути), и на MS должно быть давление, чтобы добиться прогресса в этой области. Также я не согласен с тем, что соглашения об именах сборки являются делом сторонних лиц, поскольку в этой области нет обязательных стандартов. В таком случае IDE должна обеспечить соблюдение ограничений.
Читайте также: