C# 如何检测Xamarin.Forms应用程序何时在app Center中运行?

C# 如何检测Xamarin.Forms应用程序何时在app Center中运行?,c#,xamarin.forms,visual-studio-app-center-test,C#,Xamarin.forms,Visual Studio App Center Test,我有一个Xamarin表单应用程序,使用Xamarin.UITest进行测试,我需要检测它何时在app Center测试中运行 根据,在应用程序中心运行的环境变量应自动设置为1,但environment.GetEnvironmentVariable(“在应用程序中心运行”)在运行时没有值 事实上,如果我循环所有环境变量,它就不存在了: KNOX_STORAGE:/data/knox/ext_sdcard ANDROID_SOCKET_zygote:11 ASEC_MOUNTPOINT:/mnt/

我有一个Xamarin表单应用程序,使用Xamarin.UITest进行测试,我需要检测它何时在app Center测试中运行

根据,在应用程序中心运行的环境变量应自动设置为
1
,但
environment.GetEnvironmentVariable(“在应用程序中心运行”)
在运行时没有值

事实上,如果我循环所有环境变量,它就不存在了:

KNOX_STORAGE:/data/knox/ext_sdcard
ANDROID_SOCKET_zygote:11
ASEC_MOUNTPOINT:/mnt/asec
MONO_DEBUG:gen-compact-seq-points
TMPDIR:/data/user/0/com.acme.widgets.dev/cache
XA_HTTP_CLIENT_HANDLER_TYPE:Xamarin.Android.Net.AndroidClientHandler
PATH:/sbin:/system/sbin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin
MC_AUTH_TOKEN_PATH:/efs
XDG_CONFIG_HOME:/data/user/0/com.acme.widgets.dev/files/.config
DOWNLOAD_CACHE:/data/cache
ANDROID_ASSETS:/system/app
XA_TLS_PROVIDER:btls
ANDROID_ROOT:/system
MONO_GC_PARAMS:major=marksweep
XAMARIN_BUILD_ID:4658cc0f-1a7c-4c97-93a6-f2f09c5edb04
BOOTCLASSPATH:/system/framework/core-oj.jar:/system/framework/core-libart.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/bouncycastle.jar:/system/framework/apache-xml.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/sprengine.jar:/system/framework/android.hidl.base-V1.0-java.jar:/system/framework/android.hidl.manager-V1.0-java.jar:/system/framework/knoxsdk.jar:/system/framework/timakeystore.jar:/system/framework/fipstimakeystore.jar:/system/framework/sec_edm.jar:/system/framework/knoxanalyticssdk.jar:/system/framework/smartbondingservice.jar:/system/framework/ucmopensslenginehelper.jar:/system/framework/esecomm.jar:/system/framework/securetimersdk.jar:/system/framework/sec_sdp_sdk.jar:/system/framework/sec_sdp_hidden_sdk.jar:/system/framework/framework-oahl-backward-compatibility.jar:/system/framework/android.test.base.jar:/system/framework/knoxvpnuidtag.jar:/system/framework/SemAudioThumbnail.jar:/system/framework/knoxguard.jar:/system/framework/drutils.jar
ANDROID_DATA:/data
LANG:en-GB
EXTERNAL_STORAGE:/sdcard
ANDROID_BOOTLOGO:1
ENC_EMULATED_STORAGE_TARGET:/storage/enc_emulated
HOME:/data/user/0/com.acme.widgets.dev/files
SYSTEMSERVERCLASSPATH:/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar:/system/framework/com.android.location.provider.jar:/system/framework/hqm.jar:/system/framework/hcm.jar
ANDROID_STORAGE:/storage
XDG_DATA_HOME:/data/user/0/com.acme.widgets.dev/files/.local/share
我还尝试更改我的App Center CLI命令,以包括额外的环境变量,如文档所示:

——测试参数“app\u env=MY\u VAR=1”
但同样的,
MY_VAR
在应用程序中不可用

是否有其他方法读取我缺少的环境变量,或者在App Center测试中运行时有其他方法进行检测?

您不能使用“测试编译器指令”在代码中检测:

#if ENABLE_TEST_CLOUD
    Xamarin.Calabash.Start(); 
    App.IsRunningInTestMode=true;
#endif

查看正在启用测试配置的AppDelegate和MainActivity。

是否在App Center上运行UITest?也许你可以检查一下。@LucasZhang MSFT是的,我正在使用Xamarin.UITest(更新Q以包含此内容)。我最终计划从Azure DevOps开始测试运行,但目前我在本地使用App Center CLI。我可以使用预处理器指令,但我希望在运行时检测。文件上说新版本的VS支持这个指令,但我使用的是Rider。此外,发布版本不添加此指令,但调试版本使用共享的mono运行时(用于更快的本地开发)-这是App Center不接受的!(续)所以基本上如果使用指令,我可以添加我自己的指令;这是一种有效的方法,但在这样一个已经有大量项目/配置的大型项目中很烦人