2015-02-09 89 views
3

我正在使用Visual Studio 2012中的Web發佈工具發佈到文件系統。我瞭解到,我可以在Properties文件夾中打開我的* .pubxml以執行更高級的操作。pubxml web發佈工具事件生命週期

我想要做的是在發佈任務結束時運行命令行應用程序。 我通常會在自定義目標中執行此操作,並在此類事件中的某個構建之後執行它。

<Target Name="CustomAfterPublish" AfterTargets="GatherAllFilesToPublish"> 
</Target> 

的問題是,GatherAllFilesToPublish的方式來早,因爲我想在最後執行它,出版做了。 有沒有一個列表,或者是否有人知道事件中的構建以及它們被解僱的順序?基本上FileSystem web發佈的事件生命週期。

或者我該如何在最後手動觸發一個目標?

我嘗試以下沒有成功:個別

<Target Name="Msg" AfterTargets="PipelineDeployPhase;MSDeployPublish;Package"> 

而且還每天他們每個人。 那麼發佈生命週期的最後一步是什麼?

--->編輯 我加了已經跟蹤。問題是文件被複制到一個臨時路徑,之後所有文件都被刪除。所以複製到目標將無法正常工作後"GatherAllFilesToPublish"見我的跟蹤從這裏命令行窗口...

1>------ Build started: Project: Dependency of a project: Release Any CPU ------ 
2>------ Build started: Project: Dependency of another project, Configuration: Release Any CPU ------ 


3>------ Build started: Project: Web, Configuration: Release Any CPU ------ 
4>------ Publish started: Project: Web, Configuration: Release Any CPU ------ 
4>Transformed Web.config using C:\...\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config. 
4>Copying all files to temporary location below for package/publish: 
4>obj\Release\Package\PackageTmp. 

**<------------- Here is the place where my excutable is called ---------------------------------** 


4>Deleting existing files... 
4>Publishing folder /... 
4>Publishing folder App_Browsers... 
4>Publishing folder App_Themes... 
4>Publishing folder bin... 

4>Site was published successfully file:///C:/Test 
4> 
========== Build: 3 succeeded, 0 failed, 1 up-to-date, 0 skipped ========== 
========== Publish: 1 succeeded, 0 failed, 0 skipped ========== 

感謝您的幫助。

回答

2

據我所知GatherAllFilesToPublish是可用的最後一個事件。但是,根據您的要求,您仍然可以使用此事件。

而是在最終發佈位置上的文件進行操作,您可以針對寫入以下位置(其中PROJECTDIR是你的項目的文件夾顯然)的中間文件

/PROJECTDIR/OBJ /發行/ Package/PackageTmp/

似乎Visual Studio會直接複製此目錄中的所有文件。因此,在掛入GatherAllFilesToPublish時,您應該可以對此目錄中的文件進行任何更改,這些文件將反映在最終發佈位置。


相關信息

如果您想驗證GatherAllFilesToPublish是真正可以通過啓用診斷構建輸出自己做的最後一個事件。

工具 - >選項 - >項目和解決方案 - >生成和運行 - > MSBuild的 項目生成輸出的詳細程度 - >診斷

生成項目並尋找完成建設目標 「GatherAllFilesToPublish」,對我來說,這是它開始將文件複製到發佈位置之前的最後一個觸發器。

+0

應對第一個臨時目錄,讓網頁發佈拿起應對用於發佈的伎倆!謝謝 – silverfighter 2015-02-18 13:15:01

0

我有同樣的問題。您的解決方案

應對第一個臨時目錄,讓網頁發佈拿起 應對用於發佈

是有益的。

我只是想爲其他人分享它可以怎麼做:

<Target Name="CopyConfigForPublish" AfterTargets="CopyAllFilesToSingleFolderForPackage" Condition="exists('$(SolutionDir)Web.Common\bin\$(Configuration)\Log.config')"> 
    <Copy SourceFiles="$(SolutionDir)Web.Common\bin\$(Configuration)\Log.config" DestinationFolder="$(WPPAllFilesInSingleFolder)" /> 
</Target>