VS无法识别项目依赖项

时间:2016-11-16 11:56:38

标签: visual-studio-2015

我正在处理的解决方案包含400多个项目。这个问题不可重复,但非常烦人。 (Windows 8.1,Visual Studio 2015 Update 2和3)

基本上,在计算构建顺序时不会考虑某些项目依赖项。该过程因错误而停止:找不到引用的dll。它经常发生,通常是一个不同的项目“缺失”。很多时候没有什么是错的,只是有效。找不到任何模式。

如果我构建了“失踪”'手工项目然后构建解决方案,一切都很好,或者其他项目缺失'。

看起来好像VS已经忘记了项目依赖关系了,尽管每个引用都在那里,如VS和csproj文件所示。

请参阅屏幕截图:解决方案构建已停止,因为缺少dll。生成dll的项目被正确引用(请参阅解决方案资源管理器),但在“项目依赖项”对话框中不可见。我的猜测是,由于缺少依赖性,构建顺序变得混乱 - 基于并行编译导致的一些随机性 - 在某些情况下,依赖项目的构建太晚了。

dependency not recognized properly

注意:是的,我可以检查该复选框,但正如我所说,这个问题随机发生并随机项目。是的,我可以通过事先手动构建受影响的项目来解决问题。我正在寻找根本问题的解决方案。

欢迎任何提示和评论。

2 个答案:

答案 0 :(得分:1)

有时我注意到使用导入帮助程序(例如ReSharper)会导致依赖项目链接到另一个依赖项目的输出而不是依赖项源。

这就是说,如果你要创建一个项目 - 让它称之为'ProjectA' - 并将其链接到库'MyLib'然后创建'ProjectB'并允许ReSharper自动解析依赖关系以链接到'MyLib'您可能会发现ReSharper实际上会链接到。\ ProjectA \ Bin \ MyLib.dll文件而不是。\ Libraries \ MyLib \ MyLib.dll文件。

重建解决方案时,可能会发生以下情况: * ProjectB碰巧首先/更快地构建(因为,也许,ProjectA有很多变化,但ProjectB只有很少的代码更改)。 * ProjectB然后尝试链接到位于ProjectA的\ bin文件夹中的MyLib.dll,但找不到它。 * ProjectA完成构建并将其依赖项 - MyLib.dll复制到它的\ bin文件夹中。 * ProjectB不是您手动重建的,现在找到\ ProjectA \ bin \ MyLib.dll没有问题。

因此,总而言之,检查项目中依赖项的确切源位置。我猜测有400多个项目,其中一些已经成为交叉线路 祝你好运!

答案 1 :(得分:0)

就我而言,我必须删除目标项目.csproj中的所有错误。 我删除了名称中包含Error的元素,保存了更改,重新加载了项目并重建了它。在Visual Studio 2019 16.6.1中发现了此解决方案。