【发布时间】:2012-08-02 11:15:10
【问题描述】:
我有:
- 共享功能库 [A]
- 另一个库 [B] 参考 A [A1] 的 v1
我目前的 Visual Studio 解决方案有:
- 一个 dll [L],它(文件)引用 B
- 一个 WindowsService [S],它(项目)引用 L,并且还具有对 A 的更新但向后兼容的版本 [A2] 的文件引用。
当我在 Visual Studio 中构建解决方案时,一切正常。 S 的 bin 文件夹包含 L、B 和 A2(与 B 兼容,效果很好)。
但是,如果我使用 MSBuild(通过 TeamBuild)进行构建,最终的构建文件夹会以 L、B 和 A1 结尾。 A1 没有 S 需要的库 A 的新特性,所以当你尝试运行它时,S 会掉下来。
我已经阅读了一些内容,表明这与被 MSBuild 忽略的 .sln 的构建顺序有关。
正如我所料,我发现 L 的 bin 目录包含 B 和 A1,因为其中没有任何对 A2 的引用。因此,大概当 MSBuild 构建了 L(本地拉入 B 和 A1)和 S(拉入 L 和 A2)时,它必须将所有二进制文件合并到构建的最终输出中。我不明白是什么让它选择A1(来自L bin)而不是A2(来自S bin)?
我很欣赏没有什么可以说它也应该反过来,但我只是不知道 MSBuild 使用什么标准来进行此调用。
请问有人能解释一下吗?
【问题讨论】:
标签: .net visual-studio-2010 msbuild tfsbuild