Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 发布网站项目时临时路径过长_Asp.net_Visual Studio_Msbuild_Web Site Project_Web Publishing - Fatal编程技术网

Asp.net 发布网站项目时临时路径过长

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\

我试图使用发布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将文件复制到的临时目录?

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

<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
c:\shortPath\
  • 转到web项目文件夹,导航到Properties\PublishProfiles文件夹
  • 打开配置文件profile_name.pubxml(而不是profile_name.pubxml.user)
  • 标记下复制/pass
    c:\shortPath\
  • 保存您的文件,您将能够使用此profil发布您的网站
  • 尝试添加这个

    <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文件中
  • 将输出复制到Excel文件
  • 在粘贴内容的下一列中添加此Excel函数:
    =LEN(A1)
    其中“A1”是单元格,根据每个文件长度复制此函数,以便查看路径的长度
  • 在Excel中按路径长度排序
  • 确定超过建议限值的长度

  • 我知道这有点冗长,但如果您有几个导致此问题的文件,您将能够看到所有这些文件。

    即使
    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\,因为它抛出错误并声明在发布时这样做。