问题
This seems to be a common problem and I found several Stack Overflow questions, but they all seem to pertain to MSBuild.
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.
Its settings look like this:
<?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>
This yields this output:
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>
I think my problem is here: C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\
I need to use a shorter path, like C:\Temp.
I've tried some of the suggestions in other stack overflow answers.
Adding <AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
to the profile doesn't appear to help.
Adding <IntermediateOutputPath>..\Temp</IntermediateOutputPath>
doesn't seem to work either.
I'm guessing it's because these settings get picked up by MSBuild, but not dnu publish.
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:
- 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
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
File path long: 252 chars
The biggest folder is 191 characters, and with the file it's 252 characters, so that's not exceeding 240 and 260 characters, respectively.
Regardless of all this, how do I tell Visual Studio 2015 to use "C:\temp" as its temp directory, instead of my profile's temp directory?
回答1:
Change the temp output to a path with a shorter path name.
- 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>
回答2:
For new asp.net mvc 6 in project.json use
"exclude": [ "wwwroot", "node_modules" ],`
"publishExclude": [ "**.user", "**.vspscc" ]
回答3:
I think this is what you're looking for:
When you go into the "Publish Web' dialog, you'll need to change the 'Target Location' within the "Connection" tab. (Hit the Square Box with ...) and then browse to C:\Temp and your files go there...
The dialog won't allow you to create C:\Temp on the fly, so if you haven't created it already , you'll need to do so beforehand.
I do hope this does it.
来源:https://stackoverflow.com/questions/33832635/path-too-long-when-publishing-asp-net-5-from-visual-studio-2015