MSB3021 Visual Studio 中的 运行 Service Fabric 应用程序无法复制文件找不到部分路径错误
MSB3021 Unable to copy file could not find part of path error when running Service Fabric app in Visual Studio
我有一个包含多个项目的 Service Fabric 解决方案。我可以 运行 除了其中一个之外的所有项目都可以毫无问题地放在我的本地集群上,但是由于以下问题,一个特定项目将无法部署:
MSB3021 Unable to copy file
"C:\Path\To\Repo\src\MyProject\MyService\obj\Debug\netcoreapp2.1\win7-x64\PubTmp\Out\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll"
to
"C:\Path\To\Repo\src\MyProject\MyService\pkg\Debug\MyServicePkg\Code\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll".
Could not find a part of the path
'C:\Path\To\Repo\src\MyProject\MyService\pkg\Debug\MyServicePkg\Code\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll'.
还有另外两个错误报告 Microsoft.Extensions.Configuration.EnvironmentVariables.dll
和 runtimeconfig.json
的相同问题,以及 30 个警告说明随机 dll 的相同问题。
平时的都做了几次:
- 已删除所有
bin
、obj
和 pkg
目录
- 已停止本地集群
- 重新启动Visual Studio
- 重启机器
- 在单独的目录中签出回购协议
错误指出它无法在 pkg
中找到 Code
目录的部分路径,但我已验证它确实存在。
奇怪的是,这只影响了几个项目中的一个。我在这里遗漏了什么明显的东西吗?
我无法深入了解这个问题,我已经删除了解决方案目录并从 repo 重新克隆但它没有修复它,尽管在同一个父目录中。
在最后一次尝试中,我在我的用户目录的根目录中重新克隆了 repo,并且从那时起它运行良好。
我不知道问题出在哪里以及解决问题的原因。
路径太长。
几乎可以肯定,那些失败的路径突然变得太长了。
这就是为什么将 repo 移动到用户目录的根目录就可以了。
它还解释了失败的看似随机的性质以及一些项目工作而其他项目不工作的现象;有些路径很长,有些则没有。
如果您从输出中复制失败的路径 window 并将它们粘贴到 File Exploder 中,它们可以正常工作。
但是如果您从命令行或批处理文件中试验它们,它们将会失败。
我会花钱解决这个问题。
只是想插话,我遇到了同样的错误,根据之前的答案,我从 Visual Studio 建议的 C:\Users\myusername\Source\Repos 和 [=15= 位置删除了回购协议] 它到 c:\tfs。解决方案基于之后的第一次尝试。
这是 Visual Studio Enterprise 2019 版本 16.6.5。
我同意 Bart 提供的声明,路径太长。
对于遇到此问题的任何人,尝试将您的 codebase/repo 克隆到一个文件夹 更接近根目录,您可以看到它像魔法.
当然错误不直观,但问题是长度限制。
就我而言:
- 删除对其他项目的引用
- 删除点1项目的ddl所在的Bin文件夹
重新分配项目引用,编译并发布
我有一个包含多个项目的 Service Fabric 解决方案。我可以 运行 除了其中一个之外的所有项目都可以毫无问题地放在我的本地集群上,但是由于以下问题,一个特定项目将无法部署:
MSB3021 Unable to copy file "C:\Path\To\Repo\src\MyProject\MyService\obj\Debug\netcoreapp2.1\win7-x64\PubTmp\Out\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll" to "C:\Path\To\Repo\src\MyProject\MyService\pkg\Debug\MyServicePkg\Code\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll". Could not find a part of the path 'C:\Path\To\Repo\src\MyProject\MyService\pkg\Debug\MyServicePkg\Code\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll'.
还有另外两个错误报告 Microsoft.Extensions.Configuration.EnvironmentVariables.dll
和 runtimeconfig.json
的相同问题,以及 30 个警告说明随机 dll 的相同问题。
平时的都做了几次:
- 已删除所有
bin
、obj
和pkg
目录 - 已停止本地集群
- 重新启动Visual Studio
- 重启机器
- 在单独的目录中签出回购协议
错误指出它无法在 pkg
中找到 Code
目录的部分路径,但我已验证它确实存在。
奇怪的是,这只影响了几个项目中的一个。我在这里遗漏了什么明显的东西吗?
我无法深入了解这个问题,我已经删除了解决方案目录并从 repo 重新克隆但它没有修复它,尽管在同一个父目录中。
在最后一次尝试中,我在我的用户目录的根目录中重新克隆了 repo,并且从那时起它运行良好。
我不知道问题出在哪里以及解决问题的原因。
路径太长。
几乎可以肯定,那些失败的路径突然变得太长了。 这就是为什么将 repo 移动到用户目录的根目录就可以了。 它还解释了失败的看似随机的性质以及一些项目工作而其他项目不工作的现象;有些路径很长,有些则没有。
如果您从输出中复制失败的路径 window 并将它们粘贴到 File Exploder 中,它们可以正常工作。
但是如果您从命令行或批处理文件中试验它们,它们将会失败。 我会花钱解决这个问题。
只是想插话,我遇到了同样的错误,根据之前的答案,我从 Visual Studio 建议的 C:\Users\myusername\Source\Repos 和 [=15= 位置删除了回购协议] 它到 c:\tfs。解决方案基于之后的第一次尝试。
这是 Visual Studio Enterprise 2019 版本 16.6.5。
我同意 Bart 提供的声明,路径太长。
对于遇到此问题的任何人,尝试将您的 codebase/repo 克隆到一个文件夹 更接近根目录,您可以看到它像魔法.
当然错误不直观,但问题是长度限制。
就我而言:
- 删除对其他项目的引用
- 删除点1项目的ddl所在的Bin文件夹
重新分配项目引用,编译并发布