我有一个包含239个项目的解决方案。我目前有以下问题:
当我对解决方案进行“全部重建”后,完成了全部清理(删除输出目录)后:
17>------ Rebuild All started: Project: AAA, Configuration: Debug x86 ------
18>------ Rebuild All started: Project: BBB, Configuration: Debug x86 ------
18>CSC : error CS0006: Metadata file 'E:\Dev\Trunk\Debug\x86\AAA.dll' could not be found
17> XmsCommon -> E:\Dev\Trunk\Debug\x86\AAA.dll
我理解以下内容:
我不明白
一个注意事项:我不知道这是否是由于最近的变化(项目/视觉工作室/ ......),因为我花了两年时间研究这个解决方案,这是第一次我一次又一次地接受了这个问题。
所以问题是:
修改 评论之后,这里有一些额外的信息:
在BBB.csproj
中,我有以下参考:
<ProjectReference Include="..\..\..\..\SomeOtherFolder\AAA\AAA.csproj">
<Project>{6241076B-05B3-4D5D-AFA9-46D41E1CEC3A}</Project>
<Name>AAA</Name>
<Private>False</Private>
</ProjectReference>
编辑2
我不知道这是否直接相关,但在检查项目依赖关系时,我发现BBB
取决于CCC
(但AAA
没有任何内容。我想知道如果有依赖指定,它基本上忽略来自引用的所有信息?如果我尝试删除CCC
依赖,我得到一条消息:
This dependency was added by the project system and cannot be removed
编辑3
我做了一个非常有趣的发现:实际上我在编辑2中的错误是因为在两个项目之间创建引用时添加了这种依赖。
由于未知原因,似乎尚未为此处的一个引用创建此依赖项。如果我删除项目引用,然后再次将引用添加到同一项目,我现在有这种依赖(我无法删除)。 我无法找到这种“依赖性存储的位置。 关于如何“修复”这个解决方案的任何想法?
答案 0 :(得分:2)
从你的帖子中你说出来了
"I've no explicit "Project Dependency" specify(Right click on solution -> Project Dependencies)"
这意味着所有引用都是针对编译的DLL,而不是项目。
我已经多次看到这种方法由拥有大型解决方案的团队(你有239个项目)完成,因为VS加载很多项目参考的速度很慢。
我见过的解决方法是:
一个包含239个项目的单一解决方案似乎违背了将开发划分为更小模块的原则,但这并不总是您的决定......
答案 1 :(得分:2)
经过一番调查,我发现了这个问题:
实际上,当将项目引用到项目中时,Visual Studio应该自动在项目之间添加这些依赖项。通过添加项目引用,我可以很容易地看到它。此外,似乎无法删除这些“依赖项”(请参阅我的编辑2)。
所以我问的问题是如何引用一些项目并且对某些项目没有依赖性?
我检查了我的参考文献(至少在某些情况下我看到它不起作用)并且它们是项目参考而不是dll。
我的一些同事,使用完全相同的代码(获取最新版本的代码而不进行更改)没有出现此问题,并且在Visual Studio中显示了依赖关系。
所以我最后删除了我的解决方案文件附近的*.sdf
文件(在关闭了visual studio之后)。我重新打开了tadaa,所有依赖项都被visual studio重新计算了。现在我们重建,一切都是成功的。
我不确定它为什么会发生,我有时间杀死视觉工作室,也许有些事情已经腐败了。
答案 2 :(得分:0)
我在一个较小但高度相互依赖的解决方案中看到了这个问题。我们通过将并行项目构建的最大数量减少到可预测的成功来解决此问题。工具 - &gt;选项 - &gt;项目和解决方案 - &gt;建立并运行。
答案 3 :(得分:0)
我知道这不是一个解决方案,但您可以将编译依赖项转换为运行时依赖项,您可以使用依赖注入技术,如MEF或Unity。
在这种情况下,您的项目具有有限的依赖关系(Interfaces,Containers)。
但我不得不说,这些技术带来了一些副作用 - 比如“伪随机”初始化等......