Непрерывная интеграция с Blue Ocean, Github и Nuget приводит к слишком длинному пути

NUnit.Extension.VSProjectLoader.3.7.0

Я пытаюсь заставить цепочку сборки работать с Jenkins Blue Ocean, где источники находятся в GitHub, а дополнительные зависимости находятся в nuget.

Когда я восстанавливаю пакеты, я получаю сообщение об ошибке после определенного пакета NUnit.Extension.VSProjectLoader.3.7.0:

Errors in packages.config projects

    The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.

На машине с агентом путь очень короткий: C:\guinode\ к этой дополнительной длине добавляется, делая папку пакетов следующего размера:

MyGitProject заменяет мое фактическое название проекта, длина равна.

C:\guinode\workspace\MyGitProject_master-CFRRXMXQEUULVB4YKQOFGB65CQNC4U5VJKTARN2A6TSBK5PBATBA\packages

Проверка пакета на машине с агентом показывает, что NUnit.Extension.VSProjectLoader.3.7.0 был загружен полностью.

Проверяя локальную установку и заменяя первый путь к пакету, я могу найти два файла длиной 260 символов или более. Они принадлежат внутреннему проекту, поэтому у меня есть шанс повлиять на него.

Ни один из каталогов не содержит 248 символов и более.

Поэтому немедленным решением для меня является повторное развертывание внутреннего справочного пакета.

Мой вопрос на будущее: могу ли я что-то сделать с местоположением packages или что-то с workspace\MyGitProject_master-CFRRXMXQEUULVB4YKQOFGB65CQNC4U5VJKTARN2A6TSBK5PBATBA, чтобы сохранить некоторые символы по умолчанию.


person Johannes    schedule 25.07.2018    source источник


Ответы (1)


Согласно Microsoft документации можно изменить правило длины 260.

  • Если вы добавите к файлу префикс '\\? \', Например: '\\? \ C: \ guinode \ workspace ...', тогда будет использоваться длинный путь (чуть больше 32000 символов). Я надеюсь, что настройки JENKINS_HOME для такого пути заставят весь процесс использовать это (я не уверен)
  • В последней версии Windows (10.1607, 2016?) В реестре есть опция для включения длинного пути. Установите 1 на следующий ключ: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD) и перезапустите процесс.
person wargre    schedule 25.07.2018
comment
Классная идея, но я не могу заставить ее работать в окружающей среде. ´? ´ распознается как недопустимый символ как при запуске агента, так и при введении в параметр nuget restore -PackagesDirectory. Похоже, что-то подобное могло бы работать в Windows 10. Однако это не применимо к моему серверу сборки. - person Johannes; 25.07.2018