Asp.net 发布网站项目时临时路径过长
我试图使用发布ASP.NET网站项目,但出现以下错误: ASPNETCOMPILER(0,0):错误ASPRUNTIME:指定的路径、文件名, 或者两者都太长了。完全限定文件名必须小于 260个字符,目录名必须小于248个字符 人物 我看到它正在尝试将文件复制到AppData中的一个很长的路径:Asp.net 发布网站项目时临时路径过长,asp.net,visual-studio,msbuild,web-site-project,web-publishing,Asp.net,Visual Studio,Msbuild,Web Site Project,Web Publishing,我试图使用发布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\
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将文件复制到的临时目录?将其添加到发布配置文件以修改打包/发布的临时目录:
<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
c:\shortPath\
标记下复制/passc:\shortPath\
<IntermediateOutputPath>..\Temp</IntermediateOutputPath>
。\Temp
默认情况下,其他答案对我都不起作用 Visual Studio 2013社区版
我将TMP和TEMP环境变量更改为一个短文件夹名称,它成功了。这是一种旁敲侧击的回答,但我在尝试构建依赖nodeJS和gulp的解决方案时遇到了这个问题。问题是gulp依赖关系树变得非常深,而aspnet_编译器试图将该树复制到更深的目录中,从而导致此错误。我尝试了这里提到的所有东西,但没有任何效果 正如所发生的那样,我正在使用TFS进行构建,因此我的解决方案是在msbuild之前运行
attrib+h node\u modules\*/S/D
以隐藏目录树,然后运行attrib+h node\u modules\*/S/D
。那是为了我
如果编译器在这种情况下抛出的错误揭示了导致写入失败的路径,那当然很好…我们使用此解决方案确定了冗长的文件/文件夹,然后从那里更正了问题:
dir/s/b | sort/r/+261>out.txt
它将所有文件路径输出到out.txt文件中=LEN(A1)
其中“A1”是单元格,根据每个文件长度复制此函数,以便查看路径的长度我知道这有点冗长,但如果您有几个导致此问题的文件,您将能够看到所有这些文件。即使
node\u模块
的内容未包含在两个版本控制中,也不在*。csproj
文件本身删除整个node\u模块
文件夹中,也能解决此问题me。您可以尝试所选解决方案来纠正长文件路径问题
但如果由于其他问题而无法发布,您可以尝试以下方法
=>如果“解决方案配置”处于“调试”模式,请将其更改为“发布”模式并发布文件
=>如果解决方案配置处于发布模式,并且问题仍然存在,请尝试删除项目的发布文件夹中先前生成的dll,然后再次发布项目
上述任何一种方法都可以解决这个问题。对于我来说,使用Visual Studio 2019,对publish profile.pubxml文件唯一有效的更改是:
<WPPAllFilesInSingleFolder>c:\shortPath\</WPPAllFilesInSingleFolder>
c:\shortPath\
我在Microsoft.Web.Publishing.targets文件的第484行发现了此属性。完整路径是C:\Program Files(x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\Web。您在哪里找到的?我试图实现此修复,但运气不太好:@ChrisHardie我在MSBuild安装中找到了它。对我来说,这是
C:\ProgramFiles(x86)\MSBuild\Microsoft\VisualStudio\v10.5\Web\Transform
。我还得到了关于WebPublishMethod
无效的错误,但它仍然有效。“发布配置文件”在哪里?我在我的csproj文件中根本看不到这一点。@StealthRabbi我在一个没有csproj文件的网站上工作,所以它将发布配置文件放在App_数据中。然而,我查看了一个MVC应用程序的csproj文件,看起来您可能能够将该标记复制到每个构建配置的
中。您究竟是如何发现的?!是 啊我认为这是最好的解决办法。别忘了在做了这件事之后重置你的电脑。用这个解决方案解决了另一个问题,但效果也很好。我已经创建了一个指向原始临时文件夹的“符号链接”,并在env variables中使用了它。我也遵循了这一点,但我认为只需创建节点目录就足够了。所以,在之前和之后做这个attrib+h node_模块
。哇,这为我解决了这个问题!我试图编译我的视图,结果出错了。这就是我在.csproj文件中添加的内容:漂亮的解决方案。谢谢,我被困了很长时间,因为我的解决方案曾经发布,突然它开始抛出我的长度错误。这个解决方案对我有效,只是我必须在“…”之后附加一个反斜杠\Temp\,因为它抛出错误并声明在发布时这样做。