我的问题归结为这个基本案例:我们的解决方案有两个项目,A和B,项目C然后包含在其构建过程中。
当有人推送项目A或B时,Jenkins使用MSBuild构建项目,存档工件,然后启动C的构建。
当C开始时,它有四个需要运行的“复制工件”任务:首先,它将工件从A复制到。\ A \ obj \ Release \,然后复制相同的工件进入。\ A \ bin \ Release。然后它重复项目B.然后它自己构建。
这是正确的:对于C所依赖的每个项目,复制工件必须运行两次,否则MSBuild会检测到某些东西已经过时,整个东西都是从头开始构建的。
有更简单的方法吗?我是否可以将参数传递给MSBuild(或配置.csproj),该参数说“只构建此项目,假设其他项目二进制文件是最新的,无论时间戳”?有没有更好的插件可以为我处理这个?
在我们的真实案例中,我们已经拥有近20个不同的项目,并且它们之间存在分层依赖关系。这真令人烦恼(并且令人困惑)。
答案 0 :(得分:1)
您可以将BuildProjectReferences = false传递给MSBuild,告诉它跳过自动构建引用,只需构建指示的项目。