【问题标题】:How can i incrementally build my application如何逐步构建我的应用程序
【发布时间】:2014-04-01 19:02:41
【问题描述】:

我有一个桌面 WPF 应用程序,我需要不时更新它。我有一个可以提供更新的 DLL 的更新服务和一个可以将更新应用到所述 WPF 应用程序的客户端。但是我想利用 MSBuilds 增量构建来创建一个只包含更新的 DLL 的补丁。有没有办法构建整个应用程序并仅将包含更新的 DLL 输出到单独的目录?

【问题讨论】:

  • 您是否考虑过内置的 ClickOnce 部署选项?这将允许您的客户在您发布构建时自动获取更新。
  • 您似乎将增量概念从“增量构建”误用为“增量部署”。
  • 是的,但肯定要进行增量部署,我需要弄清楚增量构建?

标签: c# visual-studio-2010 deployment msbuild updates


【解决方案1】:

好吧,我想我已经破解了。

解决方案是利用 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2020-02-24
    • 2023-03-12
    • 2021-04-26
    相关资源
    最近更新 更多