如果依赖项已更改,如何防止msbuild构建项目

时间:2011-07-20 14:42:10

标签: msbuild build dependencies

我在2个独立的解决方案中有2个项目

一个通过DLL引用引用另一个。

Ex:MyProjectA通过DLL引用MyprojectB

在ProjectB中,我向类文件添加了一条不相关的代码行(即string abc =“abc”;) 我重建ProjectB,ProjectB.dll被放入ProjectA引用的某个目录

我对ProjectA没有做任何更改,并尝试“构建”projectA,它构建并更新DLL。我不希望这种情况发生。 如果我再次在projectA上运行构建,则会跳过构建,因为没有进行任何更改。

对不直接影响项目A调用的依赖项的更改不应影响msbuild实际构建ProjectA的事实。这导致我们的版本控制/签名出现问题,我们不得不再次向客户端提供所有文件。

换句话说,如果我对基础项目进行一些小改动,我只需构建该基础项目并将DLL重新部署到客户端,但所有项目都会因为更改而再次构建。依赖。当我们不得不对基础项目进行一些小改动时,这对于慢速连接的人来说必须再次下载所有内容时,这真的很令人沮丧。

2 个答案:

答案 0 :(得分:1)

您应该将Project B重构为2个类库(DLL)。一个DLL(proj-B-core.dll)包含项目A实际上依赖的东西......和第二个DLL(prod-B-misc.dll)包含项目A不关心的东西。更改项目A以引用proj-B-core.dll,您将获得所需的行为。

最佳, / JHD

答案 1 :(得分:0)

我不相信这是msbuild的问题。我建议调查你的版本控制方法,但没有更多的信息,我无法评论。在这个特定情况下可能有用的一件事就是使用policy redirect。当只有1个程序集引用已更改时,这应该会阻止您重新分发整个应用程序。您只需重新分发新程序集和策略文件即可。