MSB3021 在 Visual Studio 中运行 Service Fabric 应用时无法复制文件找不到部分路径错误
Posted
技术标签:
【中文标题】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 【发布时间】:2020-01-26 13:45:38 【问题描述】:我有一个包含多个项目的 Service Fabric 解决方案。我可以在我的本地集群上运行除其中一个以外的所有项目,但由于以下问题,一个特定项目将无法部署:
MSB3021 无法复制文件 “C:\Path\To\Repo\src\MyProject\MyService\obj\Debug\netcoreapp2.1\win7-x64\PubTmp\Out\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll” 到 “C:\Path\To\Repo\src\MyProject\MyService\pkg\Debug\MyServicePkg\Code\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll”。 找不到路径的一部分 '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
重启机器
在单独的目录中签出 repo
错误指出它在pkg
中找不到Code
目录的部分路径,但我已经验证它确实存在。
奇怪的是,这只影响了几个项目中的一个。我在这里遗漏了什么明显的东西吗?
【问题讨论】:
【参考方案1】:路径太长。
几乎可以肯定,那些失败的路径突然变得太长了。 这就是为什么将 repo 移动到用户目录的根目录就可以了。 它还解释了失败看似随机的性质,以及一些项目成功而另一些项目失败的现象;有些路径很长,而另一些则没有。
如果您从输出窗口复制失败的路径并将它们粘贴到 File Exploder,它们可以正常工作。
但是,如果您从命令行或批处理文件中对它们进行试验,它们将会失败。 我会花钱解决这个问题。
【讨论】:
谢谢,我刚刚遇到了类似的问题,就是网站项目中的几个图像文件的路径太长。缩短文件名允许发布项目。【参考方案2】:我同意 Bart 提供的声明,PATH TOO LONG。
对于遇到此问题的任何人,请尝试将您的代码库/repo 克隆到 更靠近根目录的文件夹中,您会发现它像魔术一样工作。
当然错误并不直观,但问题在于长度限制。
【讨论】:
拯救生命的解决方案!!【参考方案3】:我无法深入了解这个问题,我已经删除了解决方案目录并从 repo 中重新克隆了它并没有修复它,尽管在同一个父目录中。
在最后一次尝试中,我在我的用户目录的根目录中重新克隆了 repo,从那时起它就可以正常工作了。
我不知道问题是什么以及为什么会解决它。
【讨论】:
路径太长。几乎可以肯定,那些失败的路径突然变得太长了。这就是为什么将 repo 移动到用户目录的根目录就可以了。 想象一下每个软件都需要这样的技巧吗?【参考方案4】:只是想插话,我遇到了同样的错误,根据之前的答案,我从 Visual Studio 建议的 C:\Users\myusername\Source\Repos 位置删除了 repo 并将其重新克隆到 c :\tfs。该解决方案建立在之后的第一次尝试之上。
这是在 Visual Studio Enterprise 2019 版本 16.6.5 上。
【讨论】:
【参考方案5】:就我而言:
-
删除对其他项目的引用
用点1项目的ddl删除Bin文件夹
重新分配项目引用,编译发布
【讨论】:
以上是关于MSB3021 在 Visual Studio 中运行 Service Fabric 应用时无法复制文件找不到部分路径错误的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2015 中的错误:错误 MSB4166:子节点“3”过早退出。关机
错误 MSB3073:命令“grunt dist”在 Visual Studio 2017 中以代码 3 退出
如何在仍然使用 sysnative 虚拟文件夹的同时使用 Visual Studio 的 Exec 代码 -1 避免错误 MSB3073
visual studio 2019 error MSB3073 extied with code 0
关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法