11

如何上传预编译的 .NET 程序集 (-ies) 并将我的代码作为 Azure Functions 执行?

我正在寻找一种方法来运行一些复杂的域逻辑,这些逻辑包含在自定义程序集中并由单元测试等覆盖。

这段代码有哪些限制?例如访问远程数据存储、网络等。

4

3 回答 3

17

更新:下面的答案仍然正确(仍然有效),但是现在也有对预编译函数的一流支持。有关这方面的更多信息,请参阅wiki 页面

文档(此处的链接)描述了如何使用语法从 C# 函数引用外部库和 Nuget 包#r,例如:

#r "System.Web.Http"

using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

public static Task<HttpResponseMessage> Run(HttpRequestMessage req)

可以在此 SO 帖子中看到有关此的更多详细信息。

你还可以部署自定义可执行文件并从 Azure Functions 调用它们。例如,如果您从 Windows BAT 模板开始,您可以使用它来调用 exe。这是我们的 repo 中的一个示例,显示了一个图像调整大小的示例。在此示例中,我们有一个 BAT 脚本,每当将新图像上传到 blob 容器时就会触发该脚本,并且该脚本会调用一个Resizer.exe工具来调整大小:

.\Resizer\Resizer.exe %original% %resized% 200

关于限制,所有 Azure Functions 代码都在应用服务沙箱中运行,此处描述了其限制。

于 2016-04-05T21:24:55.107 回答
3

若要在 Azure 函数中运行预编译的 .NET 程序集,可以通过 FTP 将自定义 dll 上传到函数根文件夹(在 bin 文件夹中),然后使用 #r 从 azure 函数代码中引用它。

这是一个示例,名为“WorkOnImages.dll”的 dll 上传到 azure 函数文件夹中的 azure 中:

在azure函数中导入dll

然后在 azure 函数中引用 dll:

包括dll

这是源博客文章

于 2016-05-12T11:58:16.283 回答
3

由于缺乏对 VS2017 的 Azure Function 工具支持,与 Azure SDK 3.0 不兼容,我正准备放弃 Functions 并回退到使用 VS2017 和 WebJobs SDK 的方法。

然后在 2017 年 3 月 16 日宣布,最简单的方法记录在Microsoft 的 Donna Malayeri 的一篇出色的博客文章中。

它可以做我想做的一切——真正的智能感知、调试功能。这很棒,我不会回头。

于 2017-03-24T04:34:41.010 回答