如何上传预编译的.NET程序集(-ies)并将我的代码作为Azure Functions执行?
我正在寻找一种方法来运行一些复杂的域逻辑,它包含在自定义程序集中,并由单元测试等覆盖。
此代码有哪些限制?例如。访问远程数据存储,网络等。
答案 0 :(得分:17)
更新:以下答案仍然正确(仍然有效),但现在还有对预编译功能的一流支持。有关详细信息,请参阅wiki page。
文档(link here)描述了如何使用#r
语法从C#函数引用外部库和Nuget包,例如:
#r "System.Web.Http"
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
public static Task<HttpResponseMessage> Run(HttpRequestMessage req)
有关此问题的其他详细信息,请参阅this SO post。
您还可以部署自定义可执行文件,并从Azure功能中调用它们。例如,如果从Windows BAT模板开始,则可以使用它来调用exe。这是我们仓库中的a sample,显示了一个图像调整大小示例。在此示例中,我们有一个BAT脚本,只要将新图像上载到blob容器时就会触发该脚本,并且脚本会调用Resizer.exe
工具来执行调整大小:
.\Resizer\Resizer.exe %original% %resized% 200
关于限制,所有Azure功能代码都在应用服务沙箱中运行,其限制描述为here。
答案 1 :(得分:3)
由于缺乏针对VS2017的Azure功能工具支持incompatibility with Azure SDK 3.0而感到气馁,我不得不放弃功能并回避使用VS2017和WebJobs SDK的方法。
然后在2017年3月16日宣布,微软的Donna Malayeri在excellent blog post中记录了最简单的方法。
它可以完成我想要的一切 - 真正的智能感知,调试功能。这很棒,我不会回头。