除非手动构建,否则构建具有多个依赖项的大型解决方案会失败

Building a large solution with multiple dependencies fails unless built manually

我有一个包含 56 个项目的失败大型解决方案。有时,将存储库克隆到新工作区并从头开始重建时,我会遇到奇怪的问题。

它是这样的:

我加载了已签出的解决方案文件,并获得了大约 20 个要我恢复 NuGet 库的堆叠对话框。好吧,我这样做了(但对堆叠的对话框笑了一下)

我做 Build-Clean 解决方案

我做构建解决方案

我收到 63 个类型为 CS0006 的错误,无法找到元数据 "MySolution\MyProject\bin\Debug\MyProj.dll"。这些错误中引用了大约 4-5 个 DLL。

然后我通过右键单击并进行重建来构建这些 "by hand",最终我可以构建整个项目。显然,存在一些依赖性问题,但既然它应该工作 "automagically",我该如何调查它?我几乎更愿意自己创建构建文件....

有什么想法吗?

转到项目文件夹的物理位置->右键单击转到属性->删除或取消选中只读(remove folder read-only)并重建解决方案。

问题是,有时由于您的解决方案的本地副本是只读的,并且您正在尝试构建解决方案(它会在构建过程中尝试 delete/replace 一些 .exe 文件,但它有限制由于只读模式。)

Nuget 包只会在物理本地包文件夹不存在或被删除时恢复。您可以手动删除包文件夹并构建解决方案,它将首先加载或安装所有依赖项。

试试这个,也许会有用。

原来项目(不是我的!)缺少项目之间的构建依赖关系。显然我不完全理解依赖管理(今年已经从 Java 切换到 C#),我认为它更自动化,因为我可以毫无问题地执行 "using"-statements 我虽然依赖已设置,但在某些情况下它们会丢失。稍后我将对此进行进一步调查,但现在我知道我必须自己检查每个错误并使用构建设置进行验证就足够了。