Пакеты NuGet не компилируют Azure CSX - PullRequest
0 голосов
/ 27 мая 2018

Я включил пакет NuGet в приложение-функцию Azure, которое я скачал для работы в Visual Studio.Я добавил его в project.json и все еще получаю сообщение об ошибке «CS0246: не удалось найти тип или имя пространства имен« NetTopologySuite »(отсутствует директива using или ссылка на сборку?)».Я прочитал документацию Microsoft и не могу найти, что я могу делать неправильно.

Вот пример того, как выглядит мой csx:

#r "System.Data"

using System;
using System.Data;
using System.Data.SqlClient;
using System.Net;
using NetTopologySuite;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    \\ Code to retrieve data from database and turn it into an array
    \\ of GeoJSON features called DataFromDatabase not shown


    NetTopologySuite.Features.Feature[] TrailSegments = DataFromDatabase;


    HttpResponseMessage resp = req.CreateResponse(HttpStatusCode.OK);
    resp.Content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(DataFromDatabase), System.Text.Encoding.UTF8, "application/json");
    return resp;
}

Здесьмой проект.json:

{
  "frameworks": {
    "net46": {
      "dependencies": {
        "NetTopologySuite.IO.GeoJSON": "1.14.0"
      }
    }
  }
}

Кто-нибудь имеет больше опыта с этим, который может предложить немного больше, чем то, что в документации?

"FUNCTIONS_EXTENSION_VERSION": "~1"
"WEBSITE_NODE_DEFAULT_VERSION": "6.5.0"

Ответы [ 2 ]

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

Если вы загрузите файл project.json в свою папку функций (а не в папку приложений функций), то все, что вы сделали, совершенно верно.Я выполнил ваши действия, и все нормально работает на моей стороне.

Восстановление Nuget для функции, редактируемой онлайн, не столь чувствительно, так что вы можете подождать некоторое время (вы можете отредактировать код функции и нажать кнопку Сохранить илинепосредственно перезапустите все приложение функции).

После этого вы можете увидеть project.lock.json в папке функций.Это означает, что пакет был успешно установлен.Тогда все идет хорошо.

Обновление для справки по совместному использованию нескольких функций.

Восстановление одного пакета функций не может использоваться другими.Поэтому мы должны загрузить dll вручную, если вы не хотите добавлять project.json к каждой функции.См. общие сборки .

  1. Загрузить NetTopologySuite.IO.GeoJSON .

  2. Найти четыре библиотеки(NetTopologySuite.dll/NetTopologySuite.IO.GeoJSON.dll/GeoAPI.dll/PowerCollections.dll) в пакете и загрузите их в папку bin в папке приложения функций.

  3. Добавьте четыре сборки в коде, например #r "..\bin\NetTopologySuite.IO.GeoJSON.dll".Вам также может понадобиться добавить #r "Newtonsoft.Json", так как это одна зависимость в этом пакете.

  4. Если вы используете dll с пространством имен, таким как NetTopologySuite.Features.Feature[], вам не нужно импортировать пространства имен.И наоборот.

Если вы четко знаете эти зависимости, вы можете только загружать и ссылаться на нужные вам библиотеки.

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

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

Github: https://github.com/NetTopologySuite/NetTopologySuite
NuGet v3: https://www.myget.org/F/nettopologysuite/api/v3/index.json
NuGet v2: https://www.myget.org/F/nettopologysuite/api/v2
  1. Создать файл Nuget.config
  2. Добавить следующее содержимоев этом файле и перенастройте его для своей среды.

Содержимое Nuget.config - вы можете найти исчерпывающий файл в Интернете.

enter image description here

...