好後自動部署Windows服務,這就是我想做的事 -的MSBuild - 建設
我們有一個窗口服務,我們希望自動化此服務於每一個成功的CI生成後的測試環境的部署 - 爲此,我們認爲下列做法 -
- 構建Windows服務項目(與依賴沿)
- 停止Windows服務
- 複製從輸出文件夾輸出項目到Windows Servi大街CE文件路徑
- 啓動服務
不過,目前我面臨與Windows服務的啓動和停止的問題。
這是MSBuild的片段 -
<!-- TODO: do this using Powershell instead of normal commandline so that it can be executed on remote machines as well -->
<Exec Command="Net Stop CreditProcessing" />
<!-- Exec Command="$(PowerShellExe) -NoProfile -Noninteractive -command "&{ Stop-Service CreditProcessing }"" /-->
<!-- TODO: The destination needs to come from the env variable or rsp file? -->
<Copy
SourceFiles="@(WindowsServiceFilesToDeploy)"
DestinationFiles="@(WindowsServiceFilesToDeploy->'D:\WindowsServices\Credit Processing Service%(RecursiveDir)%(Filename)%(Extension)')" />
<Exec Command="Net Start CreditProcessing" />
<!--Exec Command="$(PowerShellExe) -NoProfile -Noninteractive -command Start-Service CreditProcessing" /-->
此我直接命令行試圖命令以及命令的powershell。
A)這是當我嘗試運行此版本與普通的命令我所面臨的問題 - 服務需要一些時間來啓動/停止和構建不會等待足夠長的時間,並報告錯誤並停止
「...服務無法啓動」。 「服務沒有報告錯誤」
或有時停
時「的服務無法在其存在狀態控制。」
而如果我們立即檢查服務,它將在「開始」階段,並且很快就會進入「開始」階段。任何方式使建設更耐心一點?如果直接從命令提示符運行,該命令不會執行此操作。
B)這是我們所面臨的問題,如果我使用上面的PowerShell命令(目前在片段評論) -
它只是打開在構建日誌PowerShell提示符,然後就什麼也不做
你能否幫助避免這些問題(至少其中之一)?我認爲如果能夠正常運行,PowerShell路由更受推薦,但我願意接受建議。
一對夫婦的其他問題 -
我們要部署的服務(並因此停止和重新啓動)在遠程計算機上(而不是在那裏這個CI構建正在發生其他) - 反正這是可以做到?
有沒有辦法添加檢查服務是否已經運行,只有在運行時才停止?如果停止,我們試圖再次停止,它會給「服務沒有啓動」錯誤
你可以發佈你如何定義$(PowerShell)?在屏幕截圖中進行對照,似乎它在powershell.exe路徑之後注入了換行符。這可以解釋你所看到的行爲。 – JohnL
是的!就是這樣! @JohnL你可以把這個作爲答案,我可以upvote和標記它?! –
完成:)很高興我可以幫助 – JohnL