Ответ 1
Добавьте это в свой опубликованный профиль, чтобы изменить временный каталог для пакета/публикации:
<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
Я пытаюсь опубликовать проект веб-сайта 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 копирует файлы?
Добавьте это в свой опубликованный профиль, чтобы изменить временный каталог для пакета/публикации:
<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
Это своего рода ответ в стороне, но я столкнулся с этой проблемой при попытке MSBuild найти решение, зависящее от nodeJS и gulp. Проблема заключалась в том, что дерево зависимостей gulp стало очень глубоким, и aspnet_compiler пытался скопировать это дерево в более глубокий каталог, что привело к этой ошибке. Я пробовал все, что было здесь отмечено, но ничего не получилось.
Как это было, я работал с TFS, поэтому моим решением было запустить attrib +h node_modules\* /S /D
до msbuild, чтобы скрыть дерево каталогов, а затем attrib +h node_modules\* /S /D
. Это сделало это для меня.
Конечно, было бы неплохо, если бы ошибка, возникшая в этой ситуации компилятором, выявила путь, из-за которого запись была неудачной...
<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
в теге <PropertyGroup>
Ни один из других ответов не работал у меня.
Visual Studio 2013 Community Edition.
Я изменил переменную среды TMP и TEMP на короткое имя папки, и она сработала.
попробуйте добавить это
<IntermediateOutputPath>..\Temp</IntermediateOutputPath>
по умолчанию <propertyGroup />
Мы определили длинные файлы/папки с помощью этого решения, а затем исправили проблему:
dir /s /b | sort /r /+261 > out.txt
он выведет все пути к файлу в файл out.txt=LEN(A1)
, где "A1" - это ячейка, скопируйте ее по каждой длине файла, чтобы вы могли видеть, как долго путиЯ знаю, что это немного затянуто, но если у вас есть несколько файлов, которые приводят к этой проблеме, вы сможете увидеть их все.