2012-03-08 58 views
6

我只需要使用TFS構建創建Web Deployement包並且不希望在IIS中自動部署它。如何使用TFS創建Web部署獨立包使用TFS

我已經添加了低於生成定義兩個參數 - > MSBuild的參數

/P:CreatePackageOnPublish = TRUE/P:DeployOnBuild =真

的萬阿英,蔣達清是我沒有得到的ZIP文件在放置位置並獲取下面的錯誤。

C:\ PROGRAM 文件\的MSBuild \微軟\ VisualStudio的\ V10.0 \網絡\ Microsoft.Web.Publishing.targets (1657):在 「MapUriToIisWebServer」 任務意外失敗。 System.Runtime.InteropServices.COMException(0x80005000):未知 誤差(0x80005000)在 System.DirectoryServices.DirectoryEntry.Bind(布爾throwIfFail)
在System.DirectoryServices.DirectoryEntry.Bind()在 System.DirectoryServices.DirectoryEntry .get_IsContainer()處 System.DirectoryServices.DirectoryEntries.Find System.DirectoryServices.DirectoryEntries.CheckIsContainer()(字符串名稱,字符串 schemaClassName)在 Microsoft.Web.Publishing.Tasks.MapUriToIisWebServer.get_IisMajorVersion() 在微軟.Web.Publishing.Tasks.MapUriToIisWebServer.Execute()at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build。 BackEnd.ITaskExecutionHost.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost,TaskLoggingContext taskLoggingContext,TaskHost taskHost,ItemBucket桶,TaskExecutionMode howToExecuteTask, 布爾& taskResult)

有什麼事情是問題嗎?


現在我得到不同的錯誤

錯誤:Web部署任務失敗(類型的對象 '清單' 和路徑「E:\ TFS \開發\應用程序名稱\二進制\ Release_PublishedWebsites \ ApplicationName_Package \ ApplicationName.SourceManifest.xml')無法創建。)

錯誤:類型'manifest'和路徑'e:\ TFS \ Dev \ ApplicationName \ Binaries \ Release_PublishedWebsites \ ApplicationName_Package \ ApplicationName.SourceManifest.xml'的對象不能是創建。

錯誤:清單'sitemanifest'中的一個或多個條目無效。

錯誤:應用程序'/ ApplicationName'在站點'默認網站'中不存在。

+0

任何一個可用? – Gansun 2012-03-08 14:48:58

+0

這些屬性會導致Web發佈管道使用您的項目設置,除非您覆蓋它們。您能否告訴我們您的項目屬性中的發佈相關設置是如何配置的? – 2012-03-08 14:50:04

+0

「將部署包創建爲ZIP文件」已選中 – Gansun 2012-03-08 14:56:27

回答

5

我相信你只需要將'Package'目標添加到你的Web項目的構建中即可。

/t:Build;Package 

我一直在我的tfs構建中使用該目標來生成_PublishedWebsite文件夾與包zip一段時間,現在成功。

編輯:包目標 說明如果你看一下你的web應用程序作爲一個XML文件中爲您的csproj文件,你會看到,它包括以下

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> 

這包括了一堆網頁目標進入您的構建過程。破解這個文件打開並在底部你會看到,它依次包括

<Import Project="..\Web\Microsoft.Web.Publishing.targets" Condition="Exists('..\Web\Microsoft.Web.Publishing.targets')" /> 

此文件包含MSBuild的Web部署過程的定義。你會看到它聲明一個變量設置爲「目標」來調用一個部署爲「包」

<DeployDefaultTarget Condition="'$(DeployDefaultTarget)'==''">Package</DeployDefaultTarget> 

如果通過讀取這個文件進一步它會給你如何包裝和部署的想法在封面下工作以及您可以使用哪些屬性和目標來定製您的構建。雖然

長話短說,如果你調用

msbuild yourwebapplication.csproj /t:Package /p:Configuration=Release 

應該建立你的應用程序的發佈配置Web部署包。

+1

你能解釋一下嗎? – Gansun 2012-03-13 12:35:30

+0

所以'/ p:CreatePackageOnPublish = true'還不夠,我們需要調用包目標本身嗎? – 2014-07-07 22:57:26

0

我有同樣的問題,而解決它是痛楚:

  1. 打開你的IIS管理控制檯
  2. 轉到您的默認Web站點
  3. 添加一個名爲「應用程序名稱」
  4. 新應用
  5. 再次運行msbuild。它會工作。
0

MSBuild DeployOnBuild=true not publishing

可能的複製,我與Atlassian的竹同樣的問題,而這個固定對我來說:從使用Visual Studio的機器複製的「C的內容:\ Program Files文件(x86)的\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web「添加到TFS Build服務器。