Der*_*sár 9 visual-studio-2015
我正在处理的解决方案包含400多个项目.这个问题不可重复,但非常烦人.(Windows 8.1,Visual Studio 2015 Update 2和3)
基本上,在计算构建顺序时不考虑某些项目依赖性.该过程因错误而停止:找不到引用的dll.它偶尔会发生,通常会有一个不同的项目"缺失".很多时候没有什么是错的,只是有效.找不到任何模式.
如果我手工构建"缺失"项目然后构建解决方案,一切都很好,或者其他项目"缺失".
似乎VS已经失去了对项目依赖性的跟踪,尽管每个引用都存在,如VS和csproj文件中所见.
请参见屏幕截图:解决方案构建已停止,因为缺少dll.生成dll的项目被正确引用(请参阅解决方案资源管理器),但在"项目依赖项"对话框中不可见.我的猜测是,由于缺少依赖性,构建顺序变得混乱 - 基于并行编译导致的一些随机性 - 在某些情况下,依赖项目的构建太晚了.
注意:是的,我可以检查该复选框,但正如我所说,这个问题随机发生并随机项目.是的,我可以通过事先手动构建受影响的项目来解决问题.我正在寻找根本问题的解决方案.
欢迎任何提示和评论.
有时我注意到使用导入助手(例如 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 多个项目中,有些项目已经交叉连接。
祝你好运!
| 归档时间: |
|
| 查看次数: |
1221 次 |
| 最近记录: |