Например, чтобы получить текст из элемента управления потоком пользовательского интерфейса:
Private Delegate Function GetControlTextInvoker(ByVal ctl As Control) As String
Private Function GetControlText(ByVal ctl As Control) As String
Dim text As String
If ctl.InvokeRequired Then
text = CStr(ctl.Invoke(New GetControlTextInvoker(AddressOf GetControlText), _
ctl))
Else
text = ctl.Text
End If
Return text
End Function
Я нашел уродливый обходной путь ... но был бы рад, если бы кто-нибудь мог показать мне лучший способ:
В package.json я объявил две настройки. Тот, у которого есть основной сценарий, которому нужны все еще полученные переменные ENV, и одна запись сценария, которая загружает сначала среду, а затем запускает задачу основного сценария в этой среде.
Трудно объяснить, легко показать ... посмотрите на это:
"scripts": {
...
"IOS_internalTest": "source ./fastlane/ios_env && IOS_DEPLOY_TYPE=deploy_internalTest npm run IOS_runDeployment",
"IOS_betaTest": "source ./fastlane/ios_env && IOS_DEPLOY_TYPE=deploy_betaTest npm run IOS_runDeployment",
"IOS_runDeployment": "bundle exec fastlane ios $IOS_DEPLOY_TYPE",
...
}
Первая запись source
моего файла, где находятся все мои экспорты ENV (например, export BIMBOM=FooBar
). выполняет npm run IOS_doInternalTest
. Поскольку он запускается в том же контексте оболочки, переменные ENV, которые я source
редактировал ранее, все еще доступны.
Слава вам, если вы получили решение в одну строку