"Путь слишком длинный" при публикации asp.net 5 из Visual Studio 2015

Это, кажется, общая проблема, и я нашел несколько вопросов о переполнении стека, но все они, похоже, относятся к MSBuild.

Я пытаюсь опубликовать, щелкнув правой кнопкой мыши мой проект asp.net 5 rc1 в Visual Studio и вызывая профиль публикации на основе файловой системы.

Его настройки выглядят следующим образом:

<?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 [email protected] No description
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No README data
npm WARN package.json [email protected] No license field.
npm WARN unmet dependency C:\Source\CCollections\src\CCollections.Client.Web.Angular\node_modules\gulp-cssmin\node_modules\gulp-util requires [email protected]'^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 [email protected]'~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\

Мне нужно использовать более короткий путь, например C:\Temp.

Я пробовал некоторые из предложений в других ответах на переполнение стека.

Добавление <AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath> в профиль не помогает.

Добавление <IntermediateOutputPath>..\Temp</IntermediateOutputPath> тоже не работает.

Я предполагаю, что эти настройки получают MSBuild, но не публикуют dnu.

Итак, как я могу сообщить dnu publish для сборки пакета в C:\Temp вместо каталога appdata?

Обновление: поиск виновных: я думаю, что файлы, которые превышают ограничение пути, не находятся в указанном выше журнале и что только успешные копии регистрируются. Чтобы проверить эту гипотезу:

  • Я развернулся в c:\temp, запустив dnu publish вручную
  • Скопировал файлы из c:\temp в C:\Users\Christopher\AppData\Local\Temp\PublishTemp
  • Ran a script, чтобы повторить все файлы и вывести длину пути, превышающую 248 символов. Результаты:

    C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\пакеты\Microsoft.Extensions.Configuration.FileProviderExtensions\1.0.0-rc1-финал\Lib\net451\Microsoft.Extensions.Configuration.FileProviderExtensions.dll

    Длина файла: 249 символов

    C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96\approot\пакеты\Microsoft.Extensions.Configuration.FileProviderExtensions\1.0.0-rc1-финал\Lib\netcore50\Microsoft.Extensions.Configuration.FileProviderExtensions.dll

    Длина файла: 252 символа

Самая большая папка - 191 символ, а в файле - 252 символа, поэтому не более 240 и 260 символов соответственно.

Независимо от всего этого, как я могу сказать Visual Studio 2015 использовать "C:\temp" в качестве своего временного каталога вместо моего временного каталога профиля?

Ответы

Ответ 1

Измените выход temp на путь с более коротким именем пути.

  • Откройте цель .pubxml в .\Properties\PublishProfiles из текстовый редактор.
  • Измените или добавьте элемент, называемый PublishOutputPathNoTrailingSlash в разделе PropertyGroup и установите значение по вашему желаемому пути.
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <PublishOutputPathNoTrailingSlash>C:\Temp\Publish</PublishOutputPathNoTrailingSlash>
  </PropertyGroup>
</Project>

Ответ 2

Для нового asp.net mvc 6 в project.json используйте

"exclude": [ "wwwroot", "node_modules" ],`
"publishExclude": [ "**.user",  "**.vspscc" ]

Ответ 3

Я думаю, что это то, что вы ищете:

Когда вы заходите в диалоговое окно "Опубликовать в Интернете", вам нужно будет изменить "Местоположение цели" на вкладке "Подключение" (нажмите "Квадратный квадрат с..." ), а затем перейдите к C:\Temp и ваши файлы туда...

Диалог не позволит вам создавать C:\Temp на лету, поэтому, если вы еще не создали его, вам нужно сделать это заранее.

Надеюсь, это так.