課題原由: 目前咱們團隊使用visual studio 2013開發asp.net項目, 使用tfs2013 作源碼管理, 天天早上手動發佈項目文件包,複製到測試服務器的站點文件夾下覆蓋老文件,用此方式發佈系統,甚至一天數次。低效費力。
課題目的:利用 tfs 作自動發佈asp.net站點,無需人工干預,可以在代碼簽入時或定時進行
asp.net項目發佈。
研究結果:初步成功
自動發佈系統配置過程:
- 客戶端: visual studio 2013 開發環境 ,可以正常鏈接源碼服務器( tfs 2013 ),正常獲取簽入asp.net項目源碼
- 源碼服務器( tfs 2013 )
- asp.net 服務器(IIS) ,可以正常訪問,可以使用項目文件包覆蓋站點文件夾下老文件,並正常訪問
- IIS安裝配置「管理服務」
參考這篇文章的第二部分 :圖文詳解遠程部署ASP.NET MVC 5項目
- 下載並安裝 web deploy ,建議使用「徹底安裝」。 注意安裝順序:先「管理服務」後 「web deploy」,若是反了, 「web deploy」須要最後再運行安裝程序使用修改功能,最終作到 「徹底安裝」。
- 測試 web deploy,使用 https://IP:8172/MsDeploy.axd 這個地址測試 web deploy ,若是彈出用戶名密碼對話框,則說明 「 web deploy」安裝成功。 沒必要等待看到結果。
- 使用 visual studio 2013 asp.net項目 中的web deploy發佈,成功發佈asp.net項目到IIS的asp.net站點。
參考這篇文章的第三部分:圖文詳解遠程部署ASP.NET MVC 5項目 。
此步驟相當重要,是繼續下一步工做的基石。注意:認真關注如下圖片中的pubxml發佈配置文件,這是發佈系統的關鍵。
- 添加發布時須要添加和排除的文件的配置並測試。
例如:排除web.config文件和fonts文件夾:
<ExcludeFilesFromDeployment>
web.config
</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>
fonts
</ExcludeFoldersFromDeployment>
完整 pubxml 文件以下:
<?xml version="1.0" encoding="utf-8"?>
<!--
您 Web 項目的發佈/打包進程將使用此文件。您能夠經過編輯此 MSBuild 文件
來自定義該進程的行爲。若要了解與此相關的詳細信息,請訪問 http://go.microsoft.com/fwlink/?LinkID=208121。
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>http://192.168.61.131:81</SiteUrlToLaunchAfterPublish>
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<MSDeployServiceURL>192.168.61.131</MSDeployServiceURL>
<DeployIisAppPath>test1</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
<EnableMSDeployBackup>True</EnableMSDeployBackup>
<UserName>iispeiyu</UserName>
<_SavePWD>True</_SavePWD>
<PublishDatabaseSettings>
<Objects xmlns="">
<ObjectGroup Name="DefaultConnection" Order="1" Enabled="False">
<Destination Path="" />
<Object Type="DbDacFx">
<PreSource Path="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WebApplication4-0798e767-bdbb-48c0-b104-8b9c14b6e40c.mdf;Initial Catalog=aspnet-WebApplication4-0798e767-bdbb-48c0-b104-8b9c14b6e40c;Integrated Security=True" includeData="False" />
<Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
</Object>
<UpdateFrom Type="Web.Config">
<Source MatchValue="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-WebApplication4-0798e767-bdbb-48c0-b104-8b9c14b6e40c;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-WebApplication4-0798e767-bdbb-48c0-b104-8b9c14b6e40c.mdf" MatchAttributes="$(UpdateFromConnectionStringAttributes)" />
</UpdateFrom>
</ObjectGroup>
</Objects>
</PublishDatabaseSettings>
<!-- 排出部分文件或文件夾 -->
<ExcludeFilesFromDeployment>
web.config
</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>
fonts
</ExcludeFoldersFromDeployment>
</PropertyGroup>
<ItemGroup>
<MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String">
<UpdateDestWebConfig>False</UpdateDestWebConfig>
</MSDeployParameterValue>
</ItemGroup>
</Project>
參考技術文獻:用於 Visual Studio 和 ASP.NET 的 Web 應用程序項目部署常見問題
- tfs安裝「生成配置」
- 無需任何設置
- tfs所在機器安裝 web deploy
- 複製 visual studio 2013 所在電腦的「C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio」文件夾,到 tfs所在機器相同目錄。可事先備份老目錄。若是不進行此步操做,會出現缺失文件的錯誤。
- 配置自動生成配置文件
打開 visual studio 2013 的 asp.net 項目(團隊項目),點擊「生成」。 如下是重要部分截圖。
上一張圖片中 MSBuild 參數 : /p:DeployOnBuild=True;PublishProfile=webapp01;AllowUntrustedCertificate=true;Password=pwd
該參數是自動發佈的關鍵部分 。 PublishProfile=webapp01 是 pubxml 文件的名稱 ,見本文第一張圖片,Password=pwd 是 iis 發佈用戶的密碼, 用戶名 就在 pubxml 文件中。
-
至此, 全部配置完成。
- 測試
修改項目文件並簽入,系統會自動編譯發佈。
擴展知識:
若是想在編譯發佈前執行單元測試,就不能在「過程」中使用「默認模板」 ,而要使用
自定義生成過程模板