Функции Azure, создающие другую папку bin внутри bin - PullRequest
0 голосов
/ 12 мая 2018

У меня проблема с функциями Azure, когда я вижу, что внутри bin создается другая папка bin. Итак, структура папок выглядит так: bin -> net461 -> bin -> dll's. Однако любой другой файл (json, xml) в проекте копируется в bin -> net461. Из-за этого обращение к файлу (json, xml) становится затруднительным в коде. Мне не нужна другая папка bin. Как это исправить?

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

Возможно, обходным решением для вас будет встраивание файла в dll

Вставить текстовый файл в dll

А затем прочитайте содержимое из dll.

0 голосов
/ 14 мая 2018

Я пытаюсь прочитать файл примерно так: File.ReadAllText (@ "FolderName \ FileName.json"), но когда функция выполняется, она выдает ошибку - Не удалось найти часть пути 'D: \ Windows \ system32 \ FolderName \ FileName.json».

Я проверил эту проблему и обнаружил, что ваш код мог корректно работать на локальной стороне, но не прошел после развертывания на лазурной стороне. Возможно, вам придется явно установить абсолютный путь для чтения вашего файла JSON. И вы можете использовать Microsoft.Azure.WebJobs.ExecutionContext.FunctionDirectory , чтобы получить текущий каталог функций (например, D:\home\site\wwwroot\<FunctionName> для Azure, C:\Users\xxx\FunctionApps\bin\Debug\net461\<FunctionName> для локальной стороны). Подробности, за которыми вы можете следить Получение информации о текущей запущенной функции .

Код для чтения файла JSON будет выглядеть так:

File.ReadAllText(Path.Combine(Directory.GetParent(executionContext.FunctionDirectory).FullName,@"helloworld.json"));

Более того, вы можете следить за этим github выпуском и этим учебным пособием .

0 голосов
/ 12 мая 2018

То, что вы испытываете, является поведением по умолчанию. Разработка структуры функций проекта, созданного с помощью Visual Studio.

Следующие файлы являются частью проекта функций. Файлы здесь являются фактическими файлами кода, сгенерированными VS или созданными пользователем.

  • \ FunctiaonAppName.sln
  • \ FunctiaonAppName \ FunctiaonAppName.csproj
  • \ host.json
  • \ localsetting.json
  • \ Function.cs

Следующие файлы создаются при компиляции или сборке проекта функций. Файлы, которые находятся здесь, должны быть развернуты в Azure, выполнив шаги публикации.

  • \ Bin \ Debug \ net461 \ Функция \ function.json
  • \ Bin \ Debug \ net461 \ Bin \ functionRelatedBinaries.dll
  • host.json

Шаг сборки на самом деле выбирает все необходимые двоичные файлы, которые потребуются для успешного запуска приложения функции в Azure, и копирует их во внутреннюю папку bin. Внутренняя папка bin также содержит все ссылки на внешние двоичные файлы с помощью функции, например, Newtonsoft.Json. Содержимое net461 - это то, что нужно развернуть в Azure, чтобы он работал в облаке.

Можете ли вы помочь мне понять, как становится трудно ссылаться на файл JSON / XML с этой структурой. В приведенном выше случае вы можете просто предположить, что net461 является корнем выходных данных проекта, и там будут присутствовать все файлы xml / json.

...