在仿真器中运行时跳过Windows Azure Startup任务


Startup任务通常被用在Windows Azure中安装东西或改变托管角色代码虚拟机的一些配置。有时当你通过计算仿真器在当地运行和测试时你不想执行那些安装步骤。(例如,你可能跳过一个冗长的下载或跳过你计算机上已有东西的安装)。

使用SDK 1.5,有几种被支持的方法来确定它是不是在仿真模式下运行。从.NET代码来看,有新的RoleEnvironment.IsEmulated 静态属性。从其他代码来看(像是批处理文件startup 任务),SDK 1.5带来一种很好的方法来将IsEmulated 值放到环境变量中。下面是startup任务的定义,将获得一个EMULATED 环境变量,来判别该角色是否在计算仿真器里运行。

<Startup>
  <Task executionContext="elevated" commandLine="startup\startup.cmd">
    <Environment>
      <Variable name="EMULATED">
        <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
      </Variable>
    </Environment>
  </Task>
</Startup>

注意xpath 属性。你可以提供很多种有用的path,将帮助你获得如端点的端口、本地存储资源的位置或配置的setting值。详细信息请查看MSDN文档:“xPath Values in Windows Azure”“WebRole Schema”

现在我们需要做的是利用我们startup任务中的这个环境变量值。startup.cmd 的第一行简单地检查一下环境变量值,如果它被设为true就立即退出:

if "%EMULATED%"=="true" goto :EOF

我曾经在我的startup任务中写了各种各样的测试以避免重复运行电脑上的安装程序,这个新特性让我省去了这些事情。

本文翻译自:http://blog.smarx.com/posts/skipping-windows-azure-startup-tasks-when-running-in-the-emulator

Comments (0)

Skip to main content