用MSBuild自動發布Silverlight xap
最近剛做完一個大型Silverlight戰略性項目。在這個項目中,我主要負責了一個核心模塊的設計和開發工作。一邊寫復雜的界面導航,一邊寫服務的核心代碼,同時還要負責安排身邊其他同事的工作,并Review他們的代碼。另外,還要負責發布項目到測試環境,可把我累壞了,不過,讓我也學會了很多東西,一是學會了抗壓,二是學會了如何帶身邊的人。:)
當初,發布項目到測試環境,全是手工操作。效率不高,而且很枯燥。當時是沒辦法,來不及寫工具了。后來測試后期,我閑下來了,就想通過自動化的方式來發布項目到測試環境。因此有了對MSBuild的第一個應用。
下面的過程可以發布Silverlight xap到測試環境:
第一步:編寫Project.proj文件,描述你要做那些編譯任務。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
DefaultTargets="Main">
<PropertyGroup>
<!--vsts path of silverlight project-->
<VstsProjectPath>$/Vsts/Team/SourceCode/SilverlightPortal</VstsProjectPath>
<!--workspace of vsts path-->
<WorkspacePath>D:\VstsSourceCode\Team\SourceCode\SilverlightPortal</WorkspacePath>
<TFCommand>C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\TF.exe</TFCommand>
<TestEnvPublishPath>\\127.0.0.1\SilverlightPortal</TestEnvPublishPath>
</PropertyGroup>
<!--Step1:Get latest source code from vsts-->
<Target Name="GetLatest">
<Exec Command="'$(TFCommand)' $(VstsProjectPath) /v:T /force /recursive"
WorkingDirectory="$(WorkspacePath)"
ContinueOnError="false"/>
</Target>
<!--Step2:Build silverlight project-->
<Target Name="Build">
<MSBuild Projects="$(WorkspacePath)\SilverlightPortal.csproj"
Targets="Rebuild"
Properties="Configuration=Release"
ContinueOnError="false"/>
</Target>
<!--Step3:Publish output xap-->
<Target Name="Publish">
<Exec Command="net use $(TestEnvPublishPath) /user:TestEnv\TestUser TestUserPassword"
ContinueOnError="false"/>
<!--copy output xap to network shared directory-->
<Exec Command="copy $(WorkspacePath)\Bin\Release\SilverlightPortal.xap $(TestEnvPublishPath)\ClientBin\SilverlightPortal.xap"
ContinueOnError="false"/>
<Exec Command="notepad $(TestEnvPublishPath)\Web.config"
ContinueOnError="false"/>
</Target>
<Target Name="Main">
<CallTarget Targets="GetLatest" ContinueOnError="false"/>
<CallTarget Targets="Build" ContinueOnError="false"/>
<CallTarget Targets="Publish"/>
</Target>
</Project>
DefaultTargets="Main">
<PropertyGroup>
<!--vsts path of silverlight project-->
<VstsProjectPath>$/Vsts/Team/SourceCode/SilverlightPortal</VstsProjectPath>
<!--workspace of vsts path-->
<WorkspacePath>D:\VstsSourceCode\Team\SourceCode\SilverlightPortal</WorkspacePath>
<TFCommand>C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\TF.exe</TFCommand>
<TestEnvPublishPath>\\127.0.0.1\SilverlightPortal</TestEnvPublishPath>
</PropertyGroup>
<!--Step1:Get latest source code from vsts-->
<Target Name="GetLatest">
<Exec Command="'$(TFCommand)' $(VstsProjectPath) /v:T /force /recursive"
WorkingDirectory="$(WorkspacePath)"
ContinueOnError="false"/>
</Target>
<!--Step2:Build silverlight project-->
<Target Name="Build">
<MSBuild Projects="$(WorkspacePath)\SilverlightPortal.csproj"
Targets="Rebuild"
Properties="Configuration=Release"
ContinueOnError="false"/>
</Target>
<!--Step3:Publish output xap-->
<Target Name="Publish">
<Exec Command="net use $(TestEnvPublishPath) /user:TestEnv\TestUser TestUserPassword"
ContinueOnError="false"/>
<!--copy output xap to network shared directory-->
<Exec Command="copy $(WorkspacePath)\Bin\Release\SilverlightPortal.xap $(TestEnvPublishPath)\ClientBin\SilverlightPortal.xap"
ContinueOnError="false"/>
<Exec Command="notepad $(TestEnvPublishPath)\Web.config"
ContinueOnError="false"/>
</Target>
<Target Name="Main">
<CallTarget Targets="GetLatest" ContinueOnError="false"/>
<CallTarget Targets="Build" ContinueOnError="false"/>
<CallTarget Targets="Publish"/>
</Target>
</Project>
第二步:編寫PublishXap.bat文件,用Project.proj文件做為輸入調用msbuild.exe執行編譯任務。
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe Project.proj
pause
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe Project.proj
pause
注意,需要你創建一個目錄,目錄中放Project.proj文件和PublishXap.bat文件。雙擊bat文件即可執行構建。
0
0
全站熱搜