NuGet包无法编译Azure CSX

时间:2018-05-27 02:04:45

标签: azure azure-functions nuget-package csx

我在Azure功能应用程序中包含了一个NuGet包,我在Visual Studio中下载该应用程序。我已将它添加到project.json中,我仍然得到"错误CS0246:类型或命名空间名称' NetTopologySuite'找不到(你是否错过了使用指令或汇编引用?)"。我已经通读了microsoft's documentation并且无法找到我可能做错的事情。

以下是我的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;
}

这是我的project.json:

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

有没有人有更多的经验可以提供比文档中更多的东西?

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

2 个答案:

答案 0 :(得分:1)

如果您确实将project.json文件上传到功能文件夹(不是功能应用程序文件夹),那么您所做的就是完全正确的。我遵循了你的步骤,事情在我身边工作得很好。

Nuget恢复功能可编辑在线不是那么敏感,所以你可能会等待一段时间(你可以在功能代码中进行一些编辑并点击保存或直接重启整个功能应用程序)。

之后,您可以在功能文件夹下看到project.lock.json。这意味着包已成功安装。一切顺利。

更新,以便多个功能共享参考。

其他人无法使用其中一个功能包还原。因此,如果您不想为每个功能添加project.json,我们必须手动上传dll。请参阅shared assemblies

  1. 下载NetTopologySuite.IO.GeoJSON

  2. 在包中找到四个dll(NetTopologySuite.dll/NetTopologySuite.IO.GeoJSON.dll/GeoAPI.dll/PowerCollections.dll)并将其上传到功能应用文件夹下的bin文件夹。

  3. #r "..\bin\NetTopologySuite.IO.GeoJSON.dll"等代码中添加四个程序集。您可能还需要添加#r "Newtonsoft.Json",因为它是该程序包中的一个依赖项。

  4. 如果您使用带有NetTopologySuite.Features.Feature[]等命名空间的dll,则无需导入命名空间。反之亦然。

  5. 如果您清楚地了解这些依赖项,则只能上传和引用所需的dll。

答案 1 :(得分:0)

我看到你正在使用Nuget官方存储库中广泛使用的第三方库。在这种情况下,您需要让Azure知道您的软件包“NetTopologySuite”所在的Nuget存储库。

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. 在该文件中添加以下内容,并根据您的环境重新配置它。
  3. Nuget.config内容 - 您可以在线找到详尽的文件。

    enter image description here