如何有条件地部署程序集

时间:2012-05-30 19:22:56

标签: c# visual-studio-2010 msbuild tfs2010

我为第三方应用程序构建扩展。我们无权访问源代码。 Visual Studio有一个post build命令,用于将文件复制到所述程序的程序集目录中。

copy $(TargetDir)$(TargetName).pdb "$(ProgramDropDir)"
copy $(TargetDir)$(TargetName).dll "$(ProgramDropDir)"

当程序启动时,它会加载程序集(实际上它们是在需要时加载的,我认为这是因为JIT编译)。我们的应用包括49个组件。部署它们都很慢。通过在项目级别构建,我可以绕过缓慢的构建。这仅构建引用的程序集。 95%的情况下,这仍然存在问题。通常,只有一个程序集实际发生了变化......但所有程序集都被复制了。

如何改进此流程?理想的情况是...

  

一个。仅在更改时才部署程序集。
  B.仅在项目文件发生变化时构建。
  C.仅在我计划运行主应用程序时复制。例如。运行单元测试时不要复制   D.第三方应用程序运行时,构建失败。我必须关闭该应用程序。这意味着我必须重新登录应用程序并等待它加载(它是一个缓慢加载的野兽)。

我拥有TFS2010。如果绝对必要,我愿意接受新工具。

1 个答案:

答案 0 :(得分:0)

A. 您可以使用RoboCopy执行此操作。默认情况下,如果源和目标具有不同的时间戳或不同的文件大小,RoboCopy将仅复制文件。

如果您想使用MSBuild,也可以在MSBuild Extension Pack中使用RoboCopy任务。

B. 如果您使用的是CI服务器,则可以使用poll SCM机制,只要在SCM中进行更改,就会启动构建。

我不确定你对最后一个是什么意思。当您运行应用程序或某些单元测试时,不会触发任何构建。