1. 程式人生 > >程式碼修改之後MSbuild編譯不出最新的dll解決方法

程式碼修改之後MSbuild編譯不出最新的dll解決方法

問題:

使用jenkins釋出的時候,開發不斷反饋自己修改的檔案使用jenkins沒有釋出到測試環境。經過查證發現使用MSBUILD編譯的時出現修改的檔案編譯出的日期不是最新日期,但是使用VS編譯就不會出現此問題。

 

解決方案:

在Project裡面新增元素:新增InitialTargets="Clean;Compile"之後解決。

 

對我有啟示的帖子:
https://technet.microsoft.com/zh-cn/ms171463

VS生成的各種方法及定義:
-- 選擇“生成”或“生成解決方案”,將只編譯自上次生成以來更改過的那些專案檔案和元件。
注意
如果解決方案中包括多個專案,則“生成”命令將變成“生成解決方案”。
選擇“重新生成解決方案”,將首先“清理”解決方案,然後生成所有專案檔案和元件。
選擇“清理解決方案”將刪除所有中間檔案和輸出檔案,只留下專案檔案和元件檔案,以後可以從這些檔案生成中間檔案和輸出檔案的新例項。

 

使用msbuild編譯原始碼指令碼描述

命令列:

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>

<Target Name="Clean">
<RemoveDir Directories="@(BuildArtifactsDir)" />
<RemoveDir Directories="@(BuildBinDir)" />
</Target>

</Project>