在考慮了各種powershell和azure api方法後,我決定最快最容易的方法是在Cloud Service項目(具有.csdef文件的項目)上添加預構建事件,如下所示...
for /F "tokens=5 delims=<>= " %%n in ('findstr "vmsize=" $(ProjectDir)ServiceDefinition.csdef') do (if "ExtraSmall"==%%n (exit 0) else (exit 1))
就是這樣!
對於那些誰想要知道它是如何工作......這個預生成事件是可以直接放置在項目的前期建設活動,在一行命令行/批處理文件命令。它打開了ServiceDefinition.csdef
文件並查找包含文本行「vmsize=
」。這將返回以下行...
<WebRole name="WCFServiceWebRole1" vmsize="ExtraSmall">
然後,使用以下字符作爲分隔符(<,>,=,{空間}),它需要從該線,在這種情況下爲我們提供了第五令牌...
"ExtraSmall"
......然後,它比較對文本字符串「特」這個值,並返回ERRORLEVEL 0,如果它匹配,或ERRORLEVEL 1如果不是。返回錯誤級別1未能構建和從導致錯誤的大小VM從被部署在天青停止任何後續包和部署。
**更新:**在新Azure的門戶網站,有一個複選框,它說......允許更新,如果角色的大小改變,或者如果角色的數量變化。如果這個選項沒有被選中,那麼這也會阻止VM大小被意外更改。但我確實喜歡在構建階段捕捉它,所以我認爲我將要離開預構建事件。 – controlbox