azure - NuGet 包不编译 Azure CSX
问题描述
我在一个 Azure Function 应用程序中包含了一个 NuGet 包,我下载该应用程序以在 Visual Studio 中使用。我已将其添加到 project.json 中,但仍然收到“错误 CS0246:找不到类型或命名空间名称‘NetTopologySuite’(您是否缺少 using 指令或程序集引用?)”。我已经阅读了微软的文档,但找不到我可能做错了什么。
这是我的 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
在function文件夹下看到一个。这意味着该软件包已成功安装。然后一切顺利。
更新多个功能共享参考。
一个功能包还原不能被其他人使用。因此,如果您不想添加project.json
到每个函数中,我们必须手动上传 dll。请参阅共享程序集。
在包中找到四个 dll(
NetTopologySuite.dll/NetTopologySuite.IO.GeoJSON.dll/GeoAPI.dll/PowerCollections.dll
) 并将它们上传到bin
函数应用文件夹下的文件夹中。在代码中添加四个程序集,例如
#r "..\bin\NetTopologySuite.IO.GeoJSON.dll"
. 您可能还需要添加#r "Newtonsoft.Json"
,因为它是该包中的一个依赖项。如果您将 dll 与命名空间 like 一起使用
NetTopologySuite.Features.Feature[]
,则不必导入命名空间。反之亦然。
如果你清楚地知道这些依赖关系,你只能上传和引用你需要的dll。
推荐阅读
- python - 从 Outlook 获取特定的 xlsx 附件并将其保存在我的 Windows 计算机上
- angular - 如何在除应用程序模块之外的其他模块中使用 FormsModule?
- unity3d - 统一冲突不起作用,我的代码有什么问题?
- continuous-integration - 在 Travis yaml 中使用带有变量的 if 条件
- python - 如何比较两个文件以查看一个列中的记录是否存在于来自单独文件的另一列中,然后仅在找到的地方进行模糊匹配?
- html - 为什么在具有绝对位置的 flexbox 和元素的浏览器中会有不同的行为?
- css - 更改悬停时的图像大小而不更改父 div 的大小
- linux - 使用 patchelf 添加声明的对动态库的依赖无效
- python - 自动完成 discord.py 机器人命令
- terraform - terraform 恢复 RDS 备份