Azure本地管道中MSBuild编译rptproj生成build.obj的问题咨询
关于MSBuild编译rptproj生成build.obj的说明和优化方案
build.obj文件的用途
这是MSBuild编译Reporting Services报表项目(.rptproj)时生成的中间对象文件,核心作用是存储编译过程中的临时状态:
- 记录项目依赖关系解析结果、报表项(如rdl文件)的编译上下文
- 用于支持增量编译,下次编译时可以跳过已处理的内容,提升编译速度
更优雅的移除方式(无需事后删除步骤)
不用额外加删除任务,直接通过配置让MSBuild不生成在当前目录,或者自动清理:
1. 指定中间文件到Pipeline临时目录
在MSBuild参数里添加/p:IntermediateOutputPath=$(Build.StagingDirectory)\obj\,把build.obj这类中间文件定向到Azure Pipeline的临时 staging 目录,管道结束后会自动清理这个目录。修改后的YAML如下:
- task: MSBuild@1 displayName: 'Build myreports Report' inputs: solution: '**/myreports.rptproj' platform: $(buildPlatform) configuration: '$(buildConfiguration)' msbuildArguments: >- /p:SatelliteResourceLanguages=en /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:IntermediateOutputPath=$(Build.StagingDirectory)\obj\
2. 修改项目文件固定输出路径
直接编辑myreports.rptproj,添加或修改<IntermediateOutputPath>节点,把中间文件指定到系统临时目录,本地和管道编译都会自动清理:
<PropertyGroup> <IntermediateOutputPath>$(Temp)\myreports\obj\</IntermediateOutputPath> </PropertyGroup>
3. 禁用增量编译(不推荐,仅适合小型项目)
添加/p:IncrementalBuild=false参数强制全量编译,MSBuild不会生成用于增量编译的build.obj,但会导致每次编译耗时增加,仅适合报表数量极少的项目。
内容的提问来源于stack exchange,提问作者jmoreno
相关产品推荐
相关产品推荐

