【问题标题】:Crazy Deep Path Length in .Net Core 1.1.Net Core 1.1 中的疯狂深度路径长度
【发布时间】:2017-07-24 10:57:18
【问题描述】:

有没有人在 .NET Core 1.1 中看到过问题,在 netcoreapp1.1\publish 文件夹下,他们最终会得到一个 bin 文件夹,该文件夹似乎会自行循环,并最终导致路径过长的消息出现在 Windows 中。尝试在 Windows 资源管理器中删除此文件夹会导致出现 Source Too Long 消息。唯一的解决方案是使用RoboCopy

以下是其中一个生成路径的示例:

bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1 \publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1 \publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1 \publish\bin\release\netcoreapp1.1\publish\bin\release\netcoreapp1.1\publish\bin\release\netcoreapp1.1\publish\bin\release\netcoreapp1.1\publish\bin\release\netcoreapp1.1 \发布\控制器\

这是因为我设置不正确造成的问题吗?

最后一次清理返回以下统计信息:

文件夹:6866 文件:7391

我正在使用以下命令发布:

dotnet publish -c debug

似乎每次发布都会使文件夹结构更深,这似乎与我的项目中创建此文件夹结构的 CSHTML 文件有关:

\publish\bin\debug\netcoreapp1.1\publish\Controllers\Account\Views

然后在第二次构建这个结构:

  \publish\bin\debug\netcoreapp1.1\publish\bin\debug\netcoreapp1.1\publish\Controllers\Account\Views

等等……

我正在使用 SDK 1.0.0-preview2-1-003177

【问题讨论】:

  • 如果我没看错,磁盘上确实存在嵌套的文件夹结构吗?
  • 另外,我认为您无法使用 Windows 资源管理器删除该文件夹,因为该程序在许多方面都受限于 MAX_PATH 定义 (260)。您可以编写一个程序来为您删除文件夹。编辑:我想 Robocopy 也可以。真正的问题是路径大于 MAX_PATH
  • 你是如何发布它的?
  • 你用的是什么sdk版本?
  • @marc 我已将此添加到问题中。

标签: c# asp.net-core-1.1


【解决方案1】:

我记得我对 .NET Core SDK 的 preview2 有同样的问题。它已在 preview3 或 preview4 中修复。它肯定在 .NET Core SDK 1.0 中得到修复。正如@Marc 所提到的。只需更新您的 SDK https://www.microsoft.com/net/download/core#/sdk

使用新的 SDK,您的项目将被转换为 csproj 和 MSBuild,因此不再需要 project.json。

编辑:项目将在 VS 2017 中自动转换,如果您使用命令行工具,您应该应用 dotnet-migrate 命令。

【讨论】:

    【解决方案2】:

    尝试更新 sdk 以发布现在可用的版本。 1.0 版和 1.1 版(在撰写本文时)包含在从此处下载的一个包中。 https://www.microsoft.com/net/download/core

    正如@Andrii Litvinov 所提到的,迁移将发生在 VS2017 中。 如果您需要帮助:Microsoft 为 project.json 到 msbuild 提供免费迁移帮助。 (截至本次更新时间为 2017 年 3 月 15 日)

    签出:http://landinghub.visualstudio.com/migrate-dotnetcore

    【讨论】:

    • 哪里是查找字符串的最佳位置需要添加到global.json文件中以表明它应该使用最新的SDK,即“”1.0.0-preview2-1-003177 “”部分?
    • @MichaelEdwards 它不是项目的一部分,而是环境的一部分。您需要下载并升级您的开发环境。
    • 我已经运行了更新 EXE,但我不知道我现在应该为 Global.json 使用什么字符串值。是否应该自动更新?
    • @MichaelEdwards 不需要更新版本,因为开发环境会在编译时拉取机器上的库。 SDK 是您的开发库中使用的网络核心应用程序库。您的 global.json 以 SDK 库中的特定版本为目标。由于您之前拥有 SDK 的预览版,因此更新实际的 SDK 将确保您项目中使用的任何内容都使用生产代码。
    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多