Подтвердить что ты не робот

Слишком длинный путь Temp при публикации проекта веб-сайта

Я пытаюсь опубликовать проект веб-сайта ASP.NET с помощью Опубликовать инструмент веб-сайта, но получить эту ошибку:

ASPNETCOMPILER (0,0): Ошибка ASPRUNTIME: указанный путь, имя файла, или оба слишком велики. Полноценное имя файла должно быть меньше 260 символов, а имя каталога должно быть меньше 248 символы.

Я вижу, что он пытается скопировать файлы на очень длинный путь в AppData:

Copying all files to temporary location below for package/publish:

C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\Source.

c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /BMW.Web -p C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\Source C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\TempBuildDir

Я не мог найти ничего об этом каталоге temp в моем профиле публикации .pubxml. Как изменить временный каталог, который Visual Studio копирует файлы?

4b9b3361

Ответ 1

Добавьте это в свой опубликованный профиль, чтобы изменить временный каталог для пакета/публикации:

<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>

Ответ 2

Это своего рода ответ в стороне, но я столкнулся с этой проблемой при попытке MSBuild найти решение, зависящее от nodeJS и gulp. Проблема заключалась в том, что дерево зависимостей gulp стало очень глубоким, и aspnet_compiler пытался скопировать это дерево в более глубокий каталог, что привело к этой ошибке. Я пробовал все, что было здесь отмечено, но ничего не получилось.

Как это было, я работал с TFS, поэтому моим решением было запустить attrib +h node_modules\* /S /D до msbuild, чтобы скрыть дерево каталогов, а затем attrib +h node_modules\* /S /D. Это сделало это для меня.

Конечно, было бы неплохо, если бы ошибка, возникшая в этой ситуации компилятором, выявила путь, из-за которого запись была неудачной...

Ответ 3

  • Перейдите в папку веб-проекта, перейдите в папку "Свойства\Публикация".
  • откройте файл профиля profile_name.pubxml(не файл profile_name.pubxml.user)
  • copy/past <AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath> в теге <PropertyGroup>
  • сохраните файл, вы сможете опубликовать свой сайт, используя этот профиль

Ответ 4

Ни один из других ответов не работал у меня.

Visual Studio 2013 Community Edition.

Я изменил переменную среды TMP и TEMP на короткое имя папки, и она сработала.

Ответ 5

попробуйте добавить это

<IntermediateOutputPath>..\Temp</IntermediateOutputPath>

по умолчанию <propertyGroup />

Ответ 6

Мы определили длинные файлы/папки с помощью этого решения, а затем исправили проблему:

  • Запустите этот script в командной строке: dir /s /b | sort /r /+261 > out.txt он выведет все пути к файлу в файл out.txt
  • Скопировать вывод в файл Excel
  • В следующем столбце из того, что вы вставили, добавьте эту функцию Excel: =LEN(A1), где "A1" - это ячейка, скопируйте ее по каждой длине файла, чтобы вы могли видеть, как долго пути
  • Сортировка в Excel по длине пути
  • Определите длины по рекомендованному пределу

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