在深入探讨build configuration inheritance之后,出现了下一个问题:如何处理仅对某些包存在的构建配置?
命令行的构建过去看起来像这样:
msbuild ..\lib\Package1.dproj /target:Build /p:config=%1
msbuild ..\lib\Package2.dproj /target:Build /p:config=%1
msbuild ..\lib\Package3.dproj /target:Build /p:config=%1
参数config
是Debug
或Release
。这很好用。
现在有些软件包获得了新的构建配置,例如Release_Child_Config
(在我的情况下继承自Release
)。我现在必须做(例如):
msbuild ..\lib\Package1.dproj /target:Build /p:config=Release_Child_Config
msbuild ..\lib\Package2.dproj /target:Build /p:config=Release_Child_Config
msbuild ..\lib\Package3.dproj /target:Build /p:config=Release
在此示例中,Package3
没有名为Release_Child_Config
的构建配置。这意味着我不能再使用一个config
参数了。
我希望所有具有特殊构建配置Release_Child_Config
的软件包都可以使用它构建,其他软件包应该回退到Release
。有可能以某种方式自动化吗?或者我是否必须为每个包创建每个构建配置?
答案 0 :(得分:0)
尝试使用这两种配置。如果未启用,则应跳过构建:
msbuild ..\lib\Package1.dproj /target:Build /p:config="Release_Child_Config;Release"
msbuild ..\lib\Package2.dproj /target:Build /p:config="Release_Child_Config;Release"
msbuild ..\lib\Package3.dproj /target:Build /p:config="Release_Child_Config;Release"
或将配置顺序更改为“Release; Release_Child_Config”(将首先构建版本)
答案 1 :(得分:0)
直到出现更好的方法是我的临时解决方案:通过脚本生成批处理命令。
脚本查看每个项目文件(.dproj)并进行简单的字符串搜索。如果找到Release_Child_Config
,则会将其写入批处理文件:
msbuild ..\lib\Package1.dproj /target:Build /p:config=Release_Child_Config
如果没有,它会回到这个:
msbuild ..\lib\Package1.dproj /target:Build /p:config=Release
当然脚本做得更多,所以它也可以用于Debug
和Debug_Child_Config
等类似的情况。到目前为止,它完成了它的工作并适合构建链。