我正在尝试使用Publish Web Site tool发布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
我在.pubxml发布配置文件中找不到有关此临时目录的任何信息。如何更改Visual Studio将文件复制到的临时目录?
答案 0 :(得分:41)
将此添加到您的发布配置文件以修改包/发布的临时目录:
<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
答案 1 :(得分:12)
这是一个旁听的答案,但我在尝试MSBuild依赖于nodeJS和gulp的解决方案时遇到了这个问题。问题是gulp依赖树变得非常深,aspnet_compiler试图将该树复制到更深的目录,导致此错误。我尝试了这里所提到的所有内容,但没有任何效果。
实际上,我正在使用TFS构建,所以我的解决方案是在msbuild之前运行attrib +h node_modules\* /S /D
以隐藏目录树,然后attrib +h node_modules\* /S /D
。这样做对我来说。
如果编译器在这种情况下抛出的错误显示导致写入失败的路径,那肯定会很好...
答案 2 :(得分:11)
<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
标记<PropertyGroup>
答案 3 :(得分:6)
其他答案都不适用于我。
Visual Studio 2013社区版。
我将TMP和TEMP环境变量更改为短文件夹名称,并且它有效。
答案 4 :(得分:4)
尝试添加此
<IntermediateOutputPath>..\Temp</IntermediateOutputPath>
到默认<propertyGroup />
答案 5 :(得分:1)
即使版本控件中没有包含node_modules
的内容,也没有包含在*.csproj
文件本身中,删除整个node_modules
文件夹对我来说都是诀窍。
答案 6 :(得分:0)
我们使用此解决方案确定了冗长的文件/文件夹,然后从那里纠正了问题:
dir /s /b | sort /r /+261 > out.txt
它将所有文件路径输出到out.txt文件中=LEN(A1)
其中“A1”是单元格,将其复制到每个文件长度,以便查看路径的长度我知道这有点啰嗦,但如果您有多个文件导致此问题,您将能够全部看到它们。
答案 7 :(得分:0)
您可以尝试使用所选解决方案来纠正长文件路径问题。
如果由于某些其他问题而无法发布,您可以尝试以下方法。
=&GT;如果“解决方案配置”处于“调试”模式,请将其更改为“发布”模式并发布文件。
=&GT;如果解决方案配置处于发布模式,并且问题仍然存在,请尝试 删除先前在 '发布中生成的dll项目的 文件夹 ,再次发布项目。
任何上述方法都可以解决问题。
答案 8 :(得分:0)
对我来说,使用Visual Studio 2019,对发布配置文件.pubxml文件起作用的唯一更改是:
<WPPAllFilesInSingleFolder>c:\shortPath\</WPPAllFilesInSingleFolder>
我在Microsoft.Web.Publishing.targets文件的第484行发现了此属性。完整路径为C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v16.0 \ Web。