项目解决方案:WinForm.sln,主要代码如下:
public partial class Form1 : Form { public Form1() { InitializeComponent(); string channel = "default"; #if GooglePlay channel="google play"; #elif Samsung channel="sam sung store"; #elif AppStore channel="app store"; #endif this.textBox1.Text = channel; } }假设当前要打包 googleplay渠道
msbuild /m WinForm.sln /t:Rebuild /p:Configuration=Debug /p:DefineConstants="GooglePlay"假设当前要打包 AppStore渠道
msbuild /m WinForm.sln /t:Rebuild /p:Configuration=Debug /p:DefineConstants="AppStore"/p:DefineConstants="AppStore" 指定宏
proj配置文件分析*.proj (.net项目文件),本质上是一个xml文件,在build时根据这里面的参数进行build
<PropertyGroup Condition=" \'$(Configuration)|$(Platform)\' == \'Debug|AnyCPU\' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>TRACE;DEBUG;AppStore</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <Prefer32Bit>false</Prefer32Bit> </PropertyGroup> msbuild 文档资料MSBuild 命令行参考 https://technet.microsoft.com/zh-cn/library/ms164311(v=vs.85).aspx
msbuild-msdn : https://msdn.microsoft.com/zh-cn/library/dd393574.aspx
可能遇到的问题msbuild 不是内部或外部命令?
起因:家里的机器上同时安装VS2013 ,VS15(2016) 莫名出现msbuild不是内部或外部命令
解决办法:
C:\Program Files (x86)\MSBuild\12.0\Bin\ 添加到环境变量的 path 中
如果是vs2017 pro,我的msbuild路径在这儿:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe
devenv 不是内部或外部命令?
解决办法:C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ 添加到环境变量的path中
示例打包脚本打包单个项目和打包多个项目的示例脚本
https://github.com/zhaoqingqing/blog_samplecode/blob/master/build-tools/build_donet_signle_csproj.bat
https://github.com/zhaoqingqing/blog_samplecode/blob/master/build-tools/build_donet_muilt_csproj.bat
msbuild打包脚本可参考
https://github.com/zhaoqingqing/blog_samplecode/blob/master/build-tools/msbuild-sample.cmd