Конечная цель - я хочу запустить приложение Function локально для автоматического тестирования.Я не знаю, как это сделать без использования func.exe
.Вот моя попытка:
/// <summary>
/// Setup environment for running integration tests on MyApp APIs
/// </summary>
/// <param name="testContext"></param>
[ClassInitialize]
public static void RunFileHubLocally(TestContext testContext)
{
// Do the programmatic equivalent of right-click "Debug -> Start new instance" on API.
// This uses Azure Functions Core CLI to deploy the Function App locally.
azureFunctionsCliShell = new Process();
azureFunctionsCliShell.StartInfo.UseShellExecute = false;
azureFunctionsCliShell.StartInfo.RedirectStandardOutput = true;
azureFunctionsCliShell.StartInfo.CreateNoWindow = true;
azureFunctionsCliShell.StartInfo.FileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\..\lib\azure-functions-core-tools\func.exe"); ;
var fileInTargettedWorkingDirectory = new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\..\..\..\..\src\MyApp.Api\bin\Debug\netcoreapp2.1\host.json"));
azureFunctionsCliShell.StartInfo.WorkingDirectory = fileInTargettedWorkingDirectory.Directory.FullName;
int port = FreeTcpPort();
azureFunctionsCliShell.StartInfo.Arguments = $"host start --port {port}";
apiUrl = $"http://localhost:{port}/api";
azureFunctionsCliShell.Start();
// Wait for "Application started", the line in the output that indicates the
// application is listening to the port
const string specialPhrase = "Application started";
for ( ; ; )
{
string line = azureFunctionsCliShell.StandardOutput.ReadLine();
Console.WriteLine(line);
if (line.Contains(specialPhrase))
{
break;
}
if (azureFunctionsCliShell.StandardOutput.EndOfStream)
{
throw new Exception($"Output did not contain special phrase '{specialPhrase}'. Last line: '{line}'.");
}
}
// Hold instance of HttpClient to be disposed of during cleanup
httpClient = new HttpClient();
}
Сбой при выводе
ваша рабочая среда не установлена.Начиная с версии 2.0.1-beta.26 требуется рабочая настройка времени выполнения.Пожалуйста, запустите func settings add
FUNCTIONS_WORKER_RUNTIME <option>
или добавьте FUNCTIONS_WORKER_RUNTIME к вашему local.settings.json Доступные параметры: точка, узел, питон, powershell
%%%%%%
%%%%%%
@ %%%%%% @
@@ %%%%%% @@
@@@ %%%%%%%%%%% @@@
@@ %%%%%%%%%% @@
@@ %%%% @@
@@ %%% @@
@@ %% @@
%%
%
Основные инструменты функций Azure (2.6.666 хеш коммита: 2ea98edb55cd2fc249765fcf3ftimec0e2930): 2.0.12408.0 Приложение закрывается ...
Когда я запускаю ту же команду через консоль, она завершается успешно с
, ваша рабочая среда не установлена.Начиная с версии 2.0.1-beta.26 требуется рабочая настройка времени выполнения.Пожалуйста, запустите func settings add
FUNCTIONS_WORKER_RUNTIME <option>
или добавьте FUNCTIONS_WORKER_RUNTIME в ваш local.settings.json Доступные параметры: точка, узел, питон, powershell
%%%%%%
%%%%%%
@ %%%%%% @
@@ %%%%%% @@
@@@ %%%%%%%%%%% @@@
@@ %%%%%%%%%% @@
@@ %%%% @@
@@ %%% @@
@@ %% @@
%%
%
Основные инструменты функций Azure (2.6.666 хеш коммита: 2ea98edb55cd2fc249765fcf3ftimec0e2930): 2.0.12408.0 [26.04.2009 14:29:18] Запуск службы инициализации Rpc.[26.04.2009 14:29:18] Инициализация RpcServer…… Теперь слушаем: http://0.0.0.0:63819 Приложение запущено.Нажмите Ctrl + C, чтобы выключить.