我有一个桌面WPF应用程序,我需要不时更新。我有一个可以提供更新的DLL的更新服务和一个可以将更新应用于所述WPF应用程序的客户端。但是,我想利用MSBuilds增量构建来创建仅包含更新的DLL的修补程序。有没有办法构建整个应用程序并仅输出包含单独目录更新的DLL?
答案 0 :(得分: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>