azure - NuGet 包不编译 Azure CSX

标签 azure azure-functions nuget-package csx

我已将 NuGet 包包含在 Azure Function 应用程序中,我下载该应用程序以在 Visual Studio 中使用。我已将其添加到 project.json 中,但仍然收到“错误 CS0246:找不到类型或命名空间名称“NetTopologySuite”(是否缺少 using 指令或程序集引用?)”。我已通读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"

最佳答案

如果您上传 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 ,您不必导入 namespace 。反之亦然。

如果你清楚地知道这些依赖关系,你就可以只上传和引用你需要的dll。

关于azure - NuGet 包不编译 Azure CSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50548462/

相关文章:

c# - 使用 R 对 DocumentDB 资源进行访问控制

mongodb - 如何使用replicaset url连接mongodb?

c# - 在 Windows Azure 中为用户帐户数据库设置分区和行键

azure - 使用多级 map 在 terraform 中循环

azure - 将 Azure VM 私下连接到 azure 函数

Azure函数应用程序: Can't bind Queue to type 'Microsoft.WindowsAzure.Storage.Queue.CloudQueue' (IBinder)

msbuild - 从MSBuild中的AssemblyInfo访问版本

json - Azure 函数和 Powershell : get response in plain JSON

c# - 在 nuget 包中使用 PowerShell 编辑 Global.asax

c# - 如何在混淆后从 DLL 创建 nuget 包