Windows Azure SDK 1.5でWeb/WorkerロールのCSDEFのスキーマが変更されています。詳しくは、WorkerRole Schemaあたりを参照していただくとして。
今回はその中からxPath要素あたりを。このxPath要素はWeb/Workerロールともに追加されています。
Environment - Variable要素の子要素として、xPath要素で取得した値を環境変数に設定可能となります。
<Runtime executionContext="[limited|elevated]"> <Environment> <Variable name="<variable-name>" value="<variable-value>"> <RoleInstanceValue xpath="<xpath-to-role-environment-settings>"/> </Variable> </Environment>
同じくStartup要素などにも。
<Startup priority="<for-internal-use-only>”> <Task commandLine="" executionContext="[limited|elevated]" taskType="[simple|foreground|background]"> <Environment> <Variable name="<variable-name>" value="<variable-value>"> <RoleInstanceValue xpath="<xpath-to-role-environment-settings>"/> </Variable> </Environment> </Task> </Startup>
そのxPathですが使い方は、具体的に、xPath Values in Windows Azure ここに書かれています。RoleEnvironmentからの取得例がしっかり書いてあります。
ついでですが、今回ようやくエミュレータで動作しているか否かのフラグがRoleEnvironmentクラスに定義されました。スタートアップタスクとかで、エミュレータか切り替えたいときなどに、使えそうです。
以下のような感じで、実行すれば、コマンドプロンプトでエミュレータ実行か切り分けることができるでしょう。
<Startup> <Task commandLine="startup2.cmd" taskType="simple"> <Environment> <Variable name="isEmulated"> <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated"/> </Variable> </Environment> </Task> </Startup>
あとは、EntryPoint系にも与えられるかもしれませんが、また別途。それでは。