我已将 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 .
在包中找到四个dll(
NetTopologySuite.dll/NetTopologySuite.IO.GeoJSON.dll/GeoAPI.dll/PowerCollections.dll
)并将它们上传到bin
函数应用程序文件夹下的文件夹。在代码中添加四个程序集
#r "..\bin\NetTopologySuite.IO.GeoJSON.dll"
。您可能还需要添加#r "Newtonsoft.Json"
因为它是该包中的一个依赖项。如果您使用具有像
NetTopologySuite.Features.Feature[]
这样的命名空间的 dll ,您不必导入 namespace 。反之亦然。
如果你清楚地知道这些依赖关系,你就可以只上传和引用你需要的dll。
关于azure - NuGet 包不编译 Azure CSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50548462/