2009-05-22 70 views
11

我想從Visual的WCF服務項目(或ASP.NET Web應用程序或...)上下文菜單中模擬「發佈...」菜單項Studio 2008.我不需要將其發佈到正在運行的IIS實例,只需將Web內容與bin文件夾放在一些本地目錄中即可。有什麼辦法可以將它添加到後期構建事件中,或作爲MSBuild任務嗎?使用命令行發佈WCF服務(或ASP.NET Web應用程序)

回答

9

下面是答案,得益於此鏈接:http://codingcockerel.co.uk/2008/05/18/how-to-publish-a-web-site-with-msbuild/ 所以,我剛纔修改的網頁應用程序的.csproj文件,並撰寫成AfterBuild這目標(已經存在):

<Target Name="BeforeBuild"> 
    <Message Text="##############Before build##################" Importance="high"/> 
    <RemoveDir Directories="publish" 
     ContinueOnError="true"/> 
</Target> 
<Target Name="AfterBuild"> 
    <Message Text="##############After build##################$(OutputFolder)" Importance="high"/> 
    <MSBuild Projects="$(ProjectName).csproj" 
      Targets="ResolveReferences;_CopyWebApplication" 
      Properties="WebProjectOutputDir=publish\;OutDir=publish\bin\" /> 
</Target> 
0

您應該可以編寫一個xcopy命令將您需要的文件複製到正確的位置。 微軟有一篇關於xcopy deployment for asp.net的文章。

一旦你有了正確的命令,你可以把它放到Post Build動作中,所以它在構建之後自動激發。

另請參閱VS Post Build Event有關僅複製dll輸出(請注意使用$(TargetPath)& $(TargetDir))的示例。

0

嗨, 你應該看看Web Deployment Projects。這些實際上是支持Visual Studio GUI的MSBuild文件。他們會預編譯你的網站。您可以擴展這些行爲以將生成的文件複製到Web服務器。

賽義德·易卜拉欣·哈希米

的My Book:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

+0

我在使用Web部署項目時遇到了問題,因爲他們部署了.csproj文件,obj文件夾和所有其他不必要的東西。我只想從Web應用程序(非網站)項目的上下文菜單中重現「發佈...」命令的行爲。有沒有更簡單的方法,或者我必須手動排除它們,就像使用xcopy一樣? – 2009-05-25 06:34:34

相關問題