2012-08-14 72 views
1

所以我嘗試使用TFS建立生成我的3個環境(ST,UAT,PROD)部署包網站部署包的web.config改造。 這就是我爲了在本地成功生成軟件包而遵循的。 http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/74bb16ab-5fe6-4c00-951b-666afd639864/TFS構建工作不

因此,我的本地機器將生成acyive配置的包,一切都很好。以下是我的構建定義: /p:DeployOnBuild = true; DeployTarget =包 我在Projects To Build中運行解決方案文件和Web部署項目。

它創建與ST,UAT和PROD各自的文件夾。在每個這些都有一個_PublishedWebsites文件夾。該文件夾有2個文件夾。

1)MydeploymentProject - 它包含轉換的web.config 2)MyDeploymentProject_Package - 包含Package文件夾內容以及zip文件和setparameters文件。這裏的一切都沒有改變。但是,如果我檢查TFS服務器上的TempBuildDir,它確實包含轉換的配置。

相比日誌本地和服務器上,我發現,在我的本地轉化後的文件被更新,並創建包而在TFS的AfterBuild目標被稱爲轉型完成,它僅止於此。

這是我的本地日誌 目標「WPPCopyWebApplicaitonPipelineCircularDependencyError」由於假條件而被跳過; ($(WPPCopyWebApplicaitonPipelineCircularDependencyError))被評估爲(False)。 目標 「ProcessItemToExcludeFromDeployment」 文件 「C:\ Program Files文件\的MSBuild \微軟\ VisualStudio的\ V10.0 \網絡\ Microsoft.Web.Publishing.targets」 從項目的「C:\ TAX-IT \ MAIN \來源\ TDDB \ TDDB_deploy2 \ TDDB_deploy2.wdproj」(目標 「PipelineCollectFilesPhase」 依賴於它): 完成建設目標 「」 項目 「TDDB_deploy2.wdproj」 ProcessItemToExcludeFromDeployment。 從項目「C:\ TAX-IT \ Main \ Source \ TDDB \」中的目標「GetProjectWebProperties」中的文件「C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets」 TDDB_deploy2 \ TDDB_deploy2.wdproj 「(目標 」PipelineCollectFilesPhase「 依賴於它): 使用 」GetProjectProperties C「 從裝配任務」:\ Program Files文件\的MSBuild \微軟\ WebDeployment \ V10.0 \ .... \ VisualStudio的\ V10。 0 \網絡\ Microsoft.Web.Publishing.Tasks.dll」。 任務「GetProjectProperties」

我不知道什麼是錯的。 另外我在我的Build服務器上安裝了VS2010,web部署2.0和3.0以及web部署工具。

任何人都遇到過這個問題並解決。 請幫忙。

感謝

回答

2

MadCoder,

從我從你的描述雲集,你擁有了一切設置正確。看起來你只是缺少「配置」參數。當你運行構建定義時,它使用在「構建配置」參數中指定的配置。如果你想建立多個配置(就像你建議的那樣),你需要定義多個配置。我遇到的一個問題是:當您查看TFS構建過程的日誌時,是否看到多個配置構建,或者您只看到一個?如果你只看到一個,那麼你沒有定義所有的配置來轉換配置文件。根據你的描述,你需要看到這樣的事情在構建定義配置:

enter image description here

如果你不想部署到Web服務器,你可以停止閱讀這裏,和唐」不得不繼續。


如果您選擇使用TFS生成定義部署到Web服務器,你需要有一個目標Web服務器的某個地方,你需要安裝和配置V2/V3上的Web部署該服務器也是如此。

當您使用TFS構建定義進行部署時,轉換將在部署時發生,而不是在打包期間(部署前)發生。它可能在某處封裝了一個轉換後的配置,但它實際上並不會轉換與網站捆綁在一起的配置。我已經能夠讓部署實際使用轉換後的配置的唯一方法是在MSBUILD參數中指定了一個網站。這裏是我的MSBuild形式參數的例子:

/p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:MSDeployPublishMethod=RemoteAgent /p:MsDeployServiceUrl=MyWebServer/MsDeployAgentService /p:DeployIisAppPath="MyWebsite as named in IIS" /p:UserName=MyDomain\MyWebDeployUser /p:Password=MyWebDeployPassword 

如果你不想MSBUILD做實際的部署(我不喜歡,因爲那麼你的部署過程是依賴於TFS),你可以做後部署構建過程並使用the CTT Project, found on codeplex。此工具與MSBUILD執行完全相同的轉換,但它還包括參數化設置的功能,以便您可以定義環境類(例如,3個QA環境,2個臨時環境等),並仍然使用該類的相應轉換的環境。

+1

謝謝jarrettcoggin。我已經指定了3種配置。因此,它使用drop文件夾(其中整個網站)存在的轉換web.configs和包含具有開發配置設置的setParamters.xml的包文件夾以及包含未轉換的web.config的zip文件創建適當的文件夾(ST,UAT,PROD)。當我在本地執行「構建部署包」時,包中的setParameters.xml具有各自的環境連接字符串設置。我檢查了我機器上的所有安裝以訪問文件夾的權限。它只是沒有工作 – MadCoder 2012-08-16 13:12:33