最近在项目的编译工作中遇到这样一个问题:
我们的产品中附带有一个示例程序,最近的一个版本在做安装包时,希望能够在安装结束时对示例程序自动进行编译。
这里的编译跟产品的编译就有些区别了,产品的编译是由编译人员在编译服务器上进行的,在编译说明书中说明了要在编译服务器上配置静态代码分析(FxCop)的安装路径,这样编译时(服务器上编译是使用的TFS的Team build,其内核仍然是msbuild),会自动运行静态代码分析(需要预先在team build的配置中进行配置)。
示例程序的编译是在用户客户端用msbuild编译的,程序中设置了默认进行静态代码分析。而用户的客户端有可能只有vsts而没有FxCop(FxCop可能会被卸载掉),即使有FxCop而要求用户去配FxCop的环境变量也不够友好,这样的话,编译就会出现问题。
解决办法:使用msbuild的property参数。
Msbuild的property参数使用:
/property:<n>=<v> 设置或重写这些项目级属性。<n> 为
属性名,<v> 为属性值。请使用
分号或逗号分隔多个属性,或者
分别指定每个属性。(缩写为: /p)
Msbuild的脚本(还可能设置其它参数,这里忽略掉了):
msbuild GlobalBank.sln /property:RunCodeAnalysis=false
其实/property参数就是设置键值对,设置以后,参数的优先级高于项目属性的设置。