Determine se uma classe está em execução no Azure e se está realmente na nuvem em comparação com o emulador

Precisávamos determinar se uma classe estava sendo executada no Azure e se estava realmente na nuvem ou sendo emulada localmente.

Acontece que isso é muito simples de fazer, basta adicionar uma referência a:

Microsoft.WindowsAzure.ServiceRuntime

E então use esses dois booleanos estáticos, observe os blocos try / catch, os processos de 32 bits geram um erro aqui, portanto, relatar false no catch corrige isso.

public static bool InAzureEnvironment
{
get
{
try
{
return RoleEnvironment.IsAvailable;
}
catch { return false; }
}
}

public static bool InCloud
{
get
{
try
{
return InAzureEnvironment && !RoleEnvironment.IsEmulated;
}
catch { return false; }
}
}