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

C# 除非手动构建,否则构建具有多个依赖项的大型解决方案将失败,c#,visual-studio-2015,projects-and-solutions,C#,Visual Studio 2015,Projects And Solutions,我有一个faily大型解决方案,有56个项目。有时候,当我将回购协议克隆到一个新的工作区并从头开始重建时,我会遇到奇怪的问题 事情是这样的: 我加载了签出的解决方案文件,并得到了大约20个堆叠的对话框,希望我恢复NuGet库。好吧,我这么做了(但对堆叠的对话框笑了笑) 我建立清洁的解决方案 我确实构建解决方案 我收到63个CS0006类型的错误,但找不到元数据“MySolution\MyProject\bin\Debug\MyProj.dll”。这些错误中引用了大约4-5个DLL 然后,我通过右

我有一个faily大型解决方案,有56个项目。有时候,当我将回购协议克隆到一个新的工作区并从头开始重建时,我会遇到奇怪的问题

事情是这样的:

我加载了签出的解决方案文件,并得到了大约20个堆叠的对话框,希望我恢复NuGet库。好吧,我这么做了(但对堆叠的对话框笑了笑)

我建立清洁的解决方案

我确实构建解决方案

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

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


有什么想法吗?

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

问题是,有时由于您的解决方案的本地副本是只读的,并且您正在尝试生成解决方案(它将在生成过程中尝试删除/替换某些.exe文件,但由于只读模式,它有限制。)

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


试试这个,可能有用

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

对于未找到的每个
MyProj.dll
,单击未生成的项目并添加对
MyProj
的引用,这应该设置正确的生成顺序。假设它们设置为在您的配置中生成。您需要将其他项目的引用[.dll文件]添加到启动项目中。我得到错误的原因是这些项目已被引用…@PeterAndersson这些是症状,而不是原因。这不是一个很大的解决方案——我使用的解决方案有100个项目没有此类问题。另一方面,一个项目中的单个参考问题可以级联unexpectedly@PeterAndersson例如,是否有任何项目在其自己的调试文件夹中引用DLL,而不是依赖项目?您是否检查了输出窗口中的第一条错误消息?这看起来很有希望,很多文件夹都有写保护。是GIT干的吗?无论如何,这没有明显的区别。根本的问题是其他问题。如果从本地副本中删除只读副本,它将要求您也申请子文件夹,同意并继续。删除只读不会对实际项目产生影响这是针对您的本地权限。请不要在TFS上签入包文件夹。我相信VisualStudio和TFS,而不是GIT。