Question

I am trying to publish an ASP.NET web site project using the Publish Web Site tool but get this error:

ASPNETCOMPILER(0,0): Error ASPRUNTIME: 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.

I see that it is trying to copy the files to a very long path in 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

I couldn't find anything about this temp directory in my .pubxml publish profile. How can I change the temporary directory that Visual Studio copies the files to?

Was it helpful?

Solution

Add this to your publish profile to modify the temporary directory for package/publish:

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

OTHER TIPS

  1. Go to your web project folder, navigate to Properties\PublishProfiles folder.
  2. open your profile file profile_name.pubxml (not the profile_name.pubxml.user)
  3. copy/past <AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath> under the <PropertyGroup> tag
  4. save your file, you would be able to publish your website using this profil

This is sort of an aside answer, but I ran into this problem when trying to MSBuild a solution that depended on nodeJS and gulp. The problem was that the gulp dependency tree became very deep and the aspnet_compiler was trying to copy that tree to a deeper directory, resulting in this error. I tried everything noted in here but nothing worked.

As it so happened, I was building with TFS, so my solution was to run an attrib +h node_modules\* /S /D before msbuild to hide the directory tree and then attrib +h node_modules\* /S /D. That did it for me.

Sure would be nice if the error thrown in this situation by the compiler revealed the path that caused the write to fail...

try adding this

<IntermediateOutputPath>..\Temp</IntermediateOutputPath>

to the default <propertyGroup />

None of the other answers worked for me.

Visual Studio 2013 Community Edition.

I changed the TMP and TEMP environment variable to a short folder name and it worked.

We identified the lengthy files/folders using this solution, then corrected the issue from there:

  1. Run this script at the command prompt: dir /s /b | sort /r /+261 > out.txt it will output all file paths into the out.txt file
  2. Copy the output to an Excel file
  3. In the next column over from what you pasted in add this Excel function: =LEN(A1) where "A1" is the cell, copy this against every file length so you can see how long the paths are
  4. Sort in Excel by the path length
  5. Identify the lengths over the recommended limit

I know this is a bit long-winded but if you have several files that are resulting in this issue you'll be able to see them all.

Even though the content of node_modules was not included in neither version control not in the *.csprojfile itself Deleting the whole node_modules folder did the trick for me.

You can try the selected solution for correcting the long file path issue.

Still if not able to publish due to some other issue, You can try below method.

=> If the 'Solution Configuration' is in 'Debug' mode, please change the same to 'Release' mode and Publish the files.

=> If the Solution Configuration is in Release mode, and if the problem still persists, please try to delete the dll generated earlier in the 'Release' folder of our project and Publish the project once again.

Any of the above method will solve the issue.

For me, using Visual Studio 2019, the only change to the publish profile .pubxml file that worked was:

<WPPAllFilesInSingleFolder>c:\shortPath\</WPPAllFilesInSingleFolder>

I discovered this property at line 484 of Microsoft.Web.Publishing.targets file. Full path was C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\Web.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top