问题:
使用jenkins发布的时候,开发不断反馈自己修改的文件使用jenkins没有发布到测试环境。经过查证发现使用MSBUILD编译的时出现修改的文件编译出的日期不是最新日期,但是使用VS编译就不会出现此问题。
解决方案:
在Project里面添加元素:添加InitialTargets="Clean;Compile"之后解决。
我理解是初始目标(InitialTargets)需要进行清理(Clean),编译(Compile),类似在手动解决方案里面右击鼠标进行:清理(Clean),编译(Compile)。也就是使用代码代替手动操作的第一步。
对我有启示的帖子:
https://technet.microsoft.com/zh-cn/ms171463
VS生成的各种方法及定义:
-- 选择“生成”或“生成解决方案”,将只编译自上次生成以来更改过的那些项目文件和组件。
注意
如果解决方案中包括多个项目,则“生成”命令将变成“生成解决方案”。
选择“重新生成解决方案”,将首先“清理”解决方案,然后生成所有项目文件和组件。
选择“清理解决方案”将删除所有中间文件和输出文件,只留下项目文件和组件文件,以后可以从这些文件生成中间文件和输出文件的新实例。
使用msbuild编译源代码脚本描述
注意:Release与Debug模式生成文件大小不一样。Debug(除错)不是Debuge(调试器)。Release意思:释放;发布;发行;放开。
命令行:
C:WindowsMicrosoft.NETFramework64v4.0.30319MSBuild "D:JenkinsReleaseAgencyHKHK-Centa-Agency-Web-SIMScriptwcf.msbuild" /p:Environment=Production
wcf.msbuild脚本描述
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" InitialTargets="Clean;Compile">
<ItemGroup>
<BuildArtifactsDir Include="..Releasewcf\" />
<SolutionFile Include="D:jenkinsworkspaceHK-Centa-Agency-Web-SIMsourcecodeCenta.Agency.ServiceCenta.Agency.Service.sln" />
<BuildBinDir Include="D:jenkinsworkspaceHK-Centa-Agency-Web-SIMsourcecodeCenta.Agency.ServiceBin\" />
</ItemGroup>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</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)" />
<MakeDir Directories="@(BuildBinDir)" />
</Target>
<Target Name="Clean">
<RemoveDir Directories="@(BuildArtifactsDir)" />
<RemoveDir Directories="@(BuildBinDir)" />
</Target>
</Project>