4-MSBUILD代替VS编译文件(学习篇)

场景:使用命令行,代替你在vs里面的右击发布功能。 在使用jenkins自动化工具发布在发布代码的之前,首先要验证你的代码是Ok的,可以编译过去的,这篇文章的目的是一个日志记录,便于自己后续可以找到。一定要注意很多时候我们在vs里面跑代码没有问题,但是不代表使用命令行发布出去是没问题的。

1、参照http://www.infoq.com/cn/articles/MSBuild-1/ 编写脚本,我编写的脚本是:2.msbuild,具体内容请参照4里面的备注信息将脚本放到单独的文件夹里面,我放到了D盘 D:\D\2.msbuild

2、使用命令行运行脚本,运行命令行的时候注意一定要以管理员的身份运行

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild "D:\D\2.msbuild" /p:Environment=Production

在命令提示符里面运行上面语句:

第一个参数:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild msbuild的安装的位置

第二个参数 "D:\D\2.msbuild" /p:Environment=Production 你自己写的脚本放在了什么位置

运行命令最终输出编译后的文件到 BuildArtifacts 文件夹里面

3、将BuildArtifacts里面的文件拷贝到D:\D\BuildArtifacts\_PublishedWebsites\Centa.Agency.HostService\bin;

将AppConfig文件夹拷贝到 D:\D\BuildArtifacts\_PublishedWebsites\Centa.Agency.HostService下面

4.msbuild的源文件

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<ItemGroup>

<BuildArtifactsDir Include="BuildArtifacts\\" />

<SolutionFile Include="C:\Program Files (x86)\Jenkins\workspace\...\Centa.Agency.Service.sln" />

</ItemGroup>

<PropertyGroup>

<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>

<BuildPlatform Condition=" '$(BuildPlatform)' == '' ">Any CPU</BuildPlatform>

</PropertyGroup>

<Target Name="Compile" DependsOnTargets="Init">

<MSBuild Projects="@(SolutionFile)" Targets="Rebuild"

Properties="OutDir=%(BuildArtifactsDir.FullPath);

Configuration=$(Configuration);

Platform=$(BuildPlatform)" />

</Target>

<Target Name="Init" DependsOnTargets="Clean">

<MakeDir Directories="@(BuildArtifactsDir)" />

</Target>

<Target Name="Clean">

<RemoveDir Directories="@(BuildArtifactsDir)" />

</Target>

</Project>

5、运行的时候常遇到输出的文件夹里面没有xx.xml,这时候添加参数/p:DocumentationFile=$(Project).xml,最后需要自己写命令行拷贝文件了

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild "D:\JenkinsRelease\Agency\SZ\SZ-Centa-Agency-Web-12013\Script\cchrapi.msbuild" /p:Environment=Production   /p:DocumentationFile=$(Project).xml

猜你喜欢

转载自blog.csdn.net/caikundashu/article/details/82145995