37

我正在尝试使用发布网站工具发布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 将文件复制到的临时目录?

4

9 回答 9

51

将此添加到您的发布配置文件以修改包/发布的临时目录:

<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
于 2013-05-13T18:32:34.357 回答
16
  1. 转到您的 Web 项目文件夹,导航到 Properties\PublishProfiles 文件夹。
  2. 打开您的个人资料文件 profile_name.pubxml(不是 profile_name.pubxml.user)
  3. <AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath><PropertyGroup>标签下复制/粘贴
  4. 保存您的文件,您将能够使用此配置文件发布您的网站
于 2014-05-06T06:04:27.590 回答
12

这是一个旁白的答案,但我在尝试 MSBuild 一个依赖于 nodeJS 和 gulp 的解决方案时遇到了这个问题。问题是 gulp 依赖树变得非常深,并且 aspnet_compiler 试图将该树复制到更深的目录,从而导致此错误。我尝试了这里提到的所有内容,但没有任何效果。

碰巧的是,我正在使用 TFS 构建,所以我的解决方案是运行一个attrib +h node_modules\* /S /Dbefore msbuild 来隐藏目录树,然后attrib +h node_modules\* /S /D. 那是为我做的。

如果编译器在这种情况下抛出的错误揭示了导致写入失败的路径,那当然会很好......

于 2016-01-14T17:04:53.940 回答
7

尝试添加这个

<IntermediateOutputPath>..\Temp</IntermediateOutputPath>

为默认<propertyGroup />

于 2014-11-19T06:54:20.123 回答
6

其他答案都不适合我。

Visual Studio 2013 社区版。

我将 TMP 和 TEMP 环境变量更改为一个简短的文件夹名称,它起作用了。

于 2015-04-30T19:59:35.667 回答
1

我们使用此解决方案确定了冗长的文件/文件夹,然后从那里纠正了问题:

  1. 在命令提示符下运行此脚本:dir /s /b | sort /r /+261 > out.txt它将所有文件路径输出到 out.txt 文件中
  2. 将输出复制到 Excel 文件
  3. 在您粘贴的下一列中添加此 Excel 函数:=LEN(A1)其中“A1”是单元格,将其复制到每个文件长度,以便您可以查看路径的长度
  4. 在 Excel 中按路径长度排序
  5. 确定超过建议限制的长度

我知道这有点冗长,但如果您有多个文件导致此问题,您将能够看到它们全部。

于 2017-07-14T09:05:09.067 回答
1

即使 的内容node_modules既不包含在版本控制中也不包含在*.csproj文件本身中删除整个node_modules文件夹对我有用。

于 2018-03-12T12:20:28.277 回答
0

您可以尝试选择的解决方案来纠正长文件路径问题。

如果由于其他问题无法发布,您可以尝试以下方法。

=> 如果“解决方案配置”处于“调试”模式,请将其更改为“发布”模式并发布文件。

=> 如果解决方案配置处于发布模式,如果问题仍然存在,请尝试删除之前在我们项目的“发布文件夹中生成的dll,然后重新发布项目。

以上任何一种方法都可以解决问题。

于 2018-04-21T10:27:50.677 回答
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。

于 2020-03-05T07:13:34.840 回答