我有一個網站(不是web application
,它是一個website
),我想從command prompt
發佈。如何使用命令提示符使用MSBuild?
我想發佈它在同一個目錄(每天晚上),我不想使用像TeamCity,TFS或Nant等第三方工具的構建自動化工具。
它應該用MSBuild
完成。
我該怎麼做?
更新:在發佈的窗口,應檢查唯一的選擇就是Use Fixed naming and single page assemblies
我有一個網站(不是web application
,它是一個website
),我想從command prompt
發佈。如何使用命令提示符使用MSBuild?
我想發佈它在同一個目錄(每天晚上),我不想使用像TeamCity,TFS或Nant等第三方工具的構建自動化工具。
它應該用MSBuild
完成。
我該怎麼做?
更新:在發佈的窗口,應檢查唯一的選擇就是Use Fixed naming and single page assemblies
從您的意見,您的Web項目是一個網站項目,而不是一個Web應用程序項目。
在這種情況下,'Publish'目標不能作爲選項,但'AspNetCompiler'是解決方案。
創建一個包含以下內容的xml文件,並從MSBuild中調用它。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PrecompileWeb">
<AspNetCompiler
VirtualPath="/MyWebSite"
PhysicalPath="c:\inetpub\wwwroot\MyWebSite\"
TargetPath="c:\precompiledweb\MyWebSite\"
Force="true"
Debug="true"
FixedNames="True"
/>
</Target>
</Project>
對此任務的引用是here,您可以配置所有取消選中選項。
FixedName =「True」等於檢查'使用固定命名和單頁...'選項。
然後您從MSBuild而不是解決方案文件調用此文件。
MSBuild your.xml /p:Configuration=<Debug/Release>
只要您的類庫被您的網站項目引用,它們就會一起構建。
我的解決方案包含4個'class projects'和一個網站,我想先構建項目然後發佈網站。你能爲這個塞納里奧寫一個psudo代碼嗎?發佈的唯一設置是**使用固定命名和單個頁面程序集**和其他複選框不應該被選中。預先感謝您 – 2011-05-02 08:36:47
您的答案是我正在查找的內容,但不幸的是,當我運行您的命令(** MSBuild命令**)時,我遇到了一個錯誤,**'此應用程序已經預編譯**。它是什麼。 – 2011-05-02 09:38:24
通過從路徑中刪除PrecomciledWeb.Config解決了我的問題。 – 2011-05-02 09:49:31
MSBuild.exe **MYPROJ**.sln
/p:outdir="Z:\output\\",OutputPath="Z:\output\\",webprojectoutputdir="Z:\output\\",configuration=RELEASE
/t:Clean;Build
/flp1:logfile=Z:\output\\\Log_msbuild.log;verbosity=detailed
/flp2:logfile=Z:\output\\\Log_warnings.log;warningsonly;verbosity=detailed
/flp3:logfile=Z:\output\\\Log_errors.log;errorsonly;verbosity=detailed
/nologo
/noconlog
它可以編譯的項目的所有類型(網頁,Web服務,臺式機,..),它可以創建日誌文件爲(buildlog,錯誤和警告)。
對不起,延遲迴復,並感謝您的輸入阿蘭。不幸的是你的建議沒有工作,所以最後我做了以下內容:
This build does not copy output files to a drop folder
生成默認選項卡AsConfigured
作爲Output location
下的值2. Build
進程選項卡使用此MSBuild的參數字符串下:
/p:DeployOnBuild=True;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;PackageTempRootDir="\\192.168.x.x\Nightly\MainBranch";AutoParameterizationWebConfigConnectionStrings=false
此結果是我用作測試站點的webroot的以下文件夾:\\192.168.x.x\Nightly\MainBranch\PackageTmp
。 這顯然不是最佳的,因爲我寧願沒有PackageTmp
文件夾,我也沒有測試在同一個解決方案中有多個Web應用程序時會發生什麼情況,但我不能在這個問題上使用更多時間。
我真的不明白爲什麼微軟將這麼簡單的任務變得如此複雜。
它應該是這樣的:** msbuild Portal.sln **或** msbuild網站** – 2011-05-02 08:21:21