如果msbuild的程序集文件已从另一台计算机生成,如何避免它不重新生成

如果msbuild的程序集文件已从另一台计算机生成,如何避免它不重新生成,msbuild,msbuild-4.0,Msbuild,Msbuild 4.0,我已经为构建自动化创建了MSBuild脚本,之前我们在每台服务器上手动构建 在我的构建脚本中,它有以下目标 下载源代码 构建解决方案 现在,在正常的工作流中,它第一次下载源代码并将所有程序集文件构建到bin/debug文件夹中,在此过程中,它也会更改程序集版本号,这是正确的,因为它没有任何以前的时间戳信息 在这一步之前,一切正常,现在我看到的是,在从SVN下载源代码之后,我将停止构建过程,从服务器复制我的所有程序集文件,并粘贴到bin/debug下的源代码文件夹中,然后恢复第二个目标的MSBui

我已经为构建自动化创建了MSBuild脚本,之前我们在每台服务器上手动构建

在我的构建脚本中,它有以下目标

  • 下载源代码
  • 构建解决方案
  • 现在,在正常的工作流中,它第一次下载源代码并将所有程序集文件构建到bin/debug文件夹中,在此过程中,它也会更改程序集版本号,这是正确的,因为它没有任何以前的时间戳信息

    在这一步之前,一切正常,现在我看到的是,在从SVN下载源代码之后,我将停止构建过程,从服务器复制我的所有程序集文件,并粘贴到bin/debug下的源代码文件夹中,然后恢复第二个目标的MSBuild脚本执行。i、 e.构建解决方案

    由于源代码和程序集文件都是相同的,没有代码更改,我如何在MSBuild中处理这样的场景,即不重新生成程序集文件

    我在google上搜索过MSBuild如何检查所有程序集文件是否都是最新的?并执行以下方法来处理它,它将按预期工作。有没有更好的方法来处理这种情况

      <Target Name="BuildSolution" Inputs="@(CsFiles)" Outputs="@(AssemblyFile)">
    
        <MSBuild Projects="@(SolutionFile)" />
    
    
    

    Afaik如果构建是最新的,则没有合适的干净方法来执行此测试,它不仅仅包括检查输出文件:还考虑了中间文件。而且你没有它们,所以MSBube会考虑过时。有了足够的黑客攻击,您可能会欺骗它,让它相信它不是,但这需要对核心msbuild代码进行大量研究。仅仅从内置VS中排除您不想构建的项目似乎比其他方法更简单、更有效。这很好,因为您的Workfow听起来已经够复杂了(除非您所说的一切都是自动化的)。如果构建是最新的,则没有合适的干净方法来进行此测试,而不仅仅是检查输出文件:还考虑了中间文件。而且你没有它们,所以MSBube会考虑过时。有了足够的黑客攻击,您可能会欺骗它,让它相信它不是,但这需要对核心msbuild代码进行大量研究。仅仅从内置VS中排除您不想构建的项目似乎比其他方法更简单、更有效。这很好,因为您的Workfow听起来已经够复杂了(除非您所说的一切都是自动化的)