問題:
使用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:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild "D:\JenkinsRelease\Agency\HK\HK-Centa-Agency-Web-SIM\Script\wcf.msbuild" /p:Environment=Production
wcf.msbuild腳本描述
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" InitialTargets="Clean;Compile">
<ItemGroup>
<BuildArtifactsDir Include="..\Release\wcf\\" />
<SolutionFile Include="D:\jenkins\workspace\HK-Centa-Agency-Web-SIM\sourcecode\Centa.Agency.Service\Centa.Agency.Service.sln" />
<BuildBinDir Include="D:\jenkins\workspace\HK-Centa-Agency-Web-SIM\sourcecode\Centa.Agency.Service\Bin\\" />
</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 Name="Clean">
<RemoveDir Directories="@(BuildArtifactsDir)" />
<RemoveDir Directories="@(BuildBinDir)" />
</Project>