“路径太长"从Visual Studio 2015发布asp.net 5时 [英] "Path too long" when publishing asp.net 5 from Visual Studio 2015
问题描述
这似乎是一个常见问题,我发现了几个堆栈溢出"问题,但它们似乎都与MSBuild有关.
This seems to be a common problem and I found several Stack Overflow questions, but they all seem to pertain to MSBuild.
我试图通过在Visual Studio中右键单击我的asp.net 5 rc1项目并调用基于文件系统的发布配置文件来进行发布.
I'm trying to publish by right-clicking on my asp.net 5 rc1 project in Visual Studio and invoking a file system-based publish profile.
其设置如下:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<CompileSource>False</CompileSource>
<_DefaultDNXVersion>dnx-clr-win-x86.1.0.0-rc1-final</_DefaultDNXVersion>
<UsePowerShell>True</UsePowerShell>
<IISCommand>web</IISCommand>
<WebRoot>wwwroot</WebRoot>
<WwwRootOut>wwwroot</WwwRootOut>
<IncludeSymbols>False</IncludeSymbols>
<Native>False</Native>
<IgnoreDNXRuntime>False</IgnoreDNXRuntime>
<publishUrl>C:\Source\CCollections\artifacts\bin\CCollections.Client.Web.Angular\Release\PublishOutput</publishUrl>
<DeleteExistingFiles>False</DeleteExistingFiles>
</PropertyGroup>
</Project>
这将产生以下输出:
C:\Source\CCollections\src\CCollections.Client.Web.Angular>C:\Users\Christopher\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-final\bin\dnu.cmd publish "C:\Source\CCollections\src\CCollections.Client.Web.Angular" --out "C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96" --configuration Release --runtime dnx-clr-win-x86.1.0.0-rc1-final --wwwroot "wwwroot" --wwwroot-out "wwwroot" --iis-command "web"
Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16202
Executing script 'prepublish' in project.json
npm WARN package.json ASP.NET@0.0.0 No description
npm WARN package.json ASP.NET@0.0.0 No repository field.
npm WARN package.json ASP.NET@0.0.0 No README data
npm WARN package.json ASP.NET@0.0.0 No license field.
npm WARN unmet dependency C:\Source\CCollections\src\CCollections.Client.Web.Angular\node_modules\gulp-cssmin\node_modules\gulp-util requires minimist@'^0.2.0' but will load
npm WARN unmet dependency C:\Source\CCollections\src\CCollections.Client.Web.Angular\node_modules\gulp-cssmin\node_modules\minimist,
npm WARN unmet dependency which is version 1.1.1
npm WARN unmet dependency C:\Source\CCollections\src\CCollections.Client.Web.Angular\node_modules\gulp-cssmin\node_modules\through2 requires readable-stream@'~1.0.17' but will load
npm WARN unmet dependency C:\Source\CCollections\src\CCollections.Client.Web.Angular\node_modules\gulp-cssmin\node_modules\readable-stream,
npm WARN unmet dependency which is version 1.1.13
[12:15:37] Using gulpfile C:\Source\CCollections\src\CCollections.Client.Web.Angular\gulpfile.js
[12:15:37] Starting 'clean:js'...
[12:15:37] Starting 'clean:css'...
[12:15:37] Finished 'clean:js' after 8.17 ms
[12:15:37] Finished 'clean:css' after 7.58 ms
[12:15:37] Starting 'clean'...
[12:15:37] Finished 'clean' after 6.63 μs
[12:15:38] Using gulpfile C:\Source\CCollections\src\CCollections.Client.Web.Angular\gulpfile.js
[12:15:38] Starting 'min:js'...
[12:15:38] Finished 'min:js' after 14 ms
[12:15:38] Starting 'min:css'...
[12:15:38] Finished 'min:css' after 3.02 ms
[12:15:38] Starting 'min'...
[12:15:38] Finished 'min' after 6.03 μs
[12:15:40] Using gulpfile C:\Source\CCollections\src\CCollections.Client.Web.Angular\gulpfile.js
[12:15:40] Starting 'libcopy'...
[12:15:40] Finished 'libcopy' after 19 ms
Copying to output path C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96
Using Package dependency Microsoft.AspNet.DataProtection.Abstractions 1.0.0-rc1-final
Using Package dependency Microsoft.CodeAnalysis.CSharp 1.1.0-rc1-20151109-01
Using Package dependency Microsoft.AspNet.Identity 3.0.0-rc1-final
Using Package dependency Microsoft.Extensions.Configuration.CommandLine 1.0.0-rc1-final
Using Package dependency Microsoft.Extensions.Logging.Console 1.0.0-rc1-final
Using Package dependency System.Runtime.InteropServices 4.0.0
Using Package dependency System.Diagnostics.Debug 4.0.0
Using Package dependency Microsoft.AspNet.Mvc.Razor.Host 6.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.AspNet.Mvc.Razor.Host\6.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.AspNet.Mvc.Razor.Host\6.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\System.Runtime.InteropServices\4.0.0
Using Package dependency EntityFramework.Commands 7.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\EntityFramework.Commands\7.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\EntityFramework.Commands\7.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.CodeAnalysis.CSharp\1.1.0-rc1-20151109-01
Source C:\Users\Christopher\.dnx\packages\Microsoft.Extensions.Configuration.CommandLine\1.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.Extensions.Configuration.CommandLine\1.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.AspNet.DataProtection.Abstractions\1.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.AspNet.DataProtection.Abstractions\1.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\System.Diagnostics.Debug\4.0.0
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\System.Diagnostics.Debug\4.0.0
Using Package dependency Microsoft.AspNet.Mvc.TagHelpers 6.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.AspNet.Mvc.TagHelpers\6.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.AspNet.Mvc.TagHelpers\6.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.CodeAnalysis.CSharp\1.1.0-rc1-20151109-01
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\System.Runtime.InteropServices\4.0.0
Using Package dependency Microsoft.Extensions.Configuration.EnvironmentVariables 1.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.Extensions.Configuration.EnvironmentVariables\1.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.Extensions.Logging.Console\1.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.AspNet.Identity\3.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.AspNet.Identity\3.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.Extensions.Configuration.EnvironmentVariables\1.0.0-rc1-final
Using Package dependency Microsoft.AspNet.Diagnostics 1.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.AspNet.Diagnostics\1.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.AspNet.Diagnostics\1.0.0-rc1-final
Using Package dependency EntityFramework.Core 7.0.0-rc1-final
Using Package dependency Microsoft.AspNet.Mvc.ViewFeatures 6.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.AspNet.Mvc.ViewFeatures\6.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.AspNet.Mvc.ViewFeatures\6.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.Extensions.Logging.Console\1.0.0-rc1-final
Using Package dependency Microsoft.Dnx.Compilation.Abstractions 1.0.0-rc1-final
Using Package dependency Microsoft.Extensions.Configuration.FileExtensions 1.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.Extensions.Configuration.FileExtensions\1.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.Extensions.Configuration.FileExtensions\1.0.0-rc1-final
Using Package dependency Microsoft.AspNet.Identity.EntityFramework 3.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.AspNet.Identity.EntityFramework\3.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\EntityFramework.Core\7.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\EntityFramework.Core\7.0.0-rc1-final
Using Package dependency System.Diagnostics.DiagnosticSource 4.0.0-beta-23516
Using Package dependency Microsoft.Extensions.Logging.Debug 1.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.Extensions.Logging.Debug\1.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.Extensions.Logging.Debug\1.0.0-rc1-final
Using Package dependency Microsoft.AspNet.Diagnostics.Abstractions 1.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.AspNet.Diagnostics.Abstractions\1.0.0-rc1-final
Using Package dependency Microsoft.AspNet.PageExecutionInstrumentation.Interfaces 1.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.AspNet.PageExecutionInstrumentation.Interfaces\1.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.AspNet.PageExecutionInstrumentation.Interfaces\1.0.0-rc1-final
Using Package dependency Microsoft.Extensions.Configuration.FileProviderExtensions 1.0.0-rc1-final
Source C:\Users\Christopher\.dnx\packages\Microsoft.Dnx.Compilation.Abstractions\1.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.Dnx.Compilation.Abstractions\1.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.AspNet.Identity.EntityFramework\3.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.AspNet.Diagnostics.Abstractions\1.0.0-rc1-final
Using Package dependency System.Text.Encoding 4.0.0
Source C:\Users\Christopher\.dnx\packages\System.Text.Encoding\4.0.0
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\System.Text.Encoding\4.0.0
Source C:\Users\Christopher\.dnx\packages\System.Diagnostics.DiagnosticSource\4.0.0-beta-23516
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\System.Diagnostics.DiagnosticSource\4.0.0-beta-23516
Source C:\Users\Christopher\.dnx\packages\Microsoft.Extensions.Configuration.FileProviderExtensions\1.0.0-rc1-final
Target C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.Extensions.Configuration.FileProviderExtensions\1.0.0-rc1-final
Error: 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.
Error: 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.
C:\Source\CCollections\src\CCollections.Client.Web.Angular>
我认为我的问题在这里:C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\
I think my problem is here: C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\
我需要使用较短的路径,例如C:\ Temp.
I need to use a shorter path, like C:\Temp.
我尝试了其他堆栈溢出答案中的一些建议.
I've tried some of the suggestions in other stack overflow answers.
向个人资料添加<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
似乎无济于事.
Adding <AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
to the profile doesn't appear to help.
添加<IntermediateOutputPath>..\Temp</IntermediateOutputPath>
似乎也不起作用.
我猜是因为这些设置是由MSBuild拾取的,而不是dnu发布.
I'm guessing it's because these settings get picked up by MSBuild, but not dnu publish.
那么我如何告诉dnu publish在C:\ Temp而不是我的appdata目录中构建软件包?
So how to I tell dnu publish to build the package in C:\Temp instead of my appdata directory?
更新:查找罪魁祸首:我认为超出路径限制的文件不在上面的日志中,并且仅记录成功的副本.要检验此假设,请执行以下操作:
Update: Finding the culprits: I think the files that exceed the path limit are not in the above log, and that only the successful copies are logged. To test this hypothesis:
- 我通过手动运行dnu publish部署到c:\ temp
- 将文件从c:\ temp复制到C:\ Users \ Christopher \ AppData \ Local \ Temp \ PublishTemp
-
运行一个脚本以递归地迭代所有文件,并输出超过248个字符的路径长度.结果:
- I deployed to c:\temp by running dnu publish manually
- Copied the files from c:\temp to C:\Users\Christopher\AppData\Local\Temp\PublishTemp
Ran a script to iterate all files recursively and output path lengths that exceed 248 characters. Results:
C:\ Users \ Christopher \ AppData \ Local \ Temp \ PublishTemp \ CCollections.Client.Web.Angular96 \ approot \ packages \ Microsoft.Extensions.Configuration.FileProviderExtensions \ 1.0.0-rc1-final \ lib \ net451 \ Microsoft.Extensions.Configuration.FileProviderExtensions.dll
C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.Extensions.Configuration.FileProviderExtensions\1.0.0-rc1-final\lib\net451\Microsoft.Extensions.Configuration.FileProviderExtensions.dll
文件路径长:249个字符
File path long: 249 chars
C:\ Users \ Christopher \ AppData \ Local \ Temp \ PublishTemp \ CCollections.Client.Web.Angular96 \ approot \ packages \ Microsoft.Extensions.Configuration.FileProviderExtensions \ 1.0.0-rc1-final \ lib \ netcore50 \ Microsoft.Extensions.Configuration.FileProviderExtensions.dll
C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\packages\Microsoft.Extensions.Configuration.FileProviderExtensions\1.0.0-rc1-final\lib\netcore50\Microsoft.Extensions.Configuration.FileProviderExtensions.dll
文件路径长:252个字符
File path long: 252 chars
最大文件夹为191个字符,文件为252个字符,因此分别不超过240个和260个字符.
The biggest folder is 191 characters, and with the file it's 252 characters, so that's not exceeding 240 and 260 characters, respectively.
无论如何,我如何告诉Visual Studio 2015使用"C:\ temp"作为其临时目录,而不是我的配置文件的临时目录?
推荐答案
将临时输出更改为具有较短路径名的路径.
Change the temp output to a path with a shorter path name.
- 从
.\Properties\PublishProfiles
中打开目标.pubxml
文本编辑器. - 更改或添加名为
PropertyGroup
下的PublishOutputPathNoTrailingSlash
并设置 值到您想要的路径.
- Open your target
.pubxml
in.\Properties\PublishProfiles
from a text editor. - Change or add an element called
PublishOutputPathNoTrailingSlash
underPropertyGroup
and set the value to your desired path.
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishOutputPathNoTrailingSlash>C:\Temp\Publish</PublishOutputPathNoTrailingSlash>
</PropertyGroup>
</Project>
这篇关于“路径太长"从Visual Studio 2015发布asp.net 5时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!