2014-04-01 58 views
0

我有一个桌面WPF应用程序,我需要随时进行更新。我有一个更新服务,可以提供更新的DLL和一个可以将更新应用到所述WPF应用程序的客户端。不过,我想使用MSBuild增量构建来创建一个只包含更新的DLL的修补程序。有没有办法建立一个完整的应用程序,并只输出包含更新到单独目录的DLL?我该如何增量构建我的应用程序

+1

你有没有考虑建在ClickOnce部署选项?这将允许您的客户在发布构建时自动获取更新。 – Brendan

+1

您似乎错误地将增量构建从“增量构建”应用到“增量部署”。 – Nicodemeus

+0

是的,但肯定要做增量部署,我需要找出增量构建? – jaywayco

回答

0

好吧,所以我认为我破解了它。

解决方案是利用MSBuild incremental builds来检查是否有更改正在编译的文件。如果已经设置了一个属性来指示这种情况,再次使用MSBuild将构建的dll复制到增量文件夹。

所以我的项目文件都有这个底部:

...  
    <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
      Other similar extension points exist, see Microsoft.Common.targets.-->  
    <Target Name="BeforeBuild" Inputs="@(Compile)" Outputs="$(OutputPath)$(AssemblyName).dll"> 
     <CreateProperty Value="true"> 
     <Output TaskParameter="Value" PropertyName="NewFile" /> 
     </CreateProperty> 
    </Target> 
    <Target Name="AfterBuild" Condition=" '$(NewFile)' == 'true' "> 
     <MakeDir Directories="$(IncrementalBuildRoot)$(BuildNumber)" Condition="!Exists('$(IncrementalBuildRoot)$(BuildNumber)')" /> 
     <Copy SourceFiles="$(OutputPath)$(AssemblyName).dll" DestinationFolder="$(IncrementalBuildRoot)$(BuildNumber)" /> 
    </Target> 
</Project> 
相关问题