将 Azure Function 发布为 NuGet 包(或从外部程序集加载函数)
Publish Azure Function as NuGet package (or load function from external assembly)
我正在考虑将可重用的 Azure 函数发布为 NuGet 包,以便在其他项目中轻松使用它。这样我就可以在其他项目中引用 NuGet 包了。
这样我就可以动态地组合一组要部署到 Azure Functions 服务的 Azure Functions。
目前可以吗?或者,可以发挥作用,例如在外部程序集中定义,并由 Azure Function 主机“获取”?
我知道这可以通过 Azure WebJobs 实现,但我还没有找到使用 Azure Functions 实现相同结果的方法。
Azure 函数主机在 host 的同一程序集中发现函数入口点(由 运行 方法中的 FunctionName 注释)。因此,您只能将所有可重用代码外部化为单独的 nuget,但仍需要为主机中的每个函数定义入口点。函数体可能只是调用您的可重用资产的最小包装器,但需要存在于主机中。
您介意分享更多有关您尝试解决的场景的信息吗?
编辑:感谢@Nsevens 的尝试。 .csproj 中的 <FunctionsInDependencies>true</FunctionsInDependencies>
将从依赖项加载函数。应该有一个显式调用来自主机的依赖项的某些方法(可能只是一个 noop 方法),以使其成为编译器的硬依赖项。我没有看到有关此的任何官方文档。
在 .csproj
文件中添加 <FunctionsInDependencies>true</FunctionsInDependencies>
似乎可以解决问题。
请确保您确实在代码中的某处 调用了依赖项(例如在Startup.cs
中),以确保程序集不会被编译器优化掉。
我正在考虑将可重用的 Azure 函数发布为 NuGet 包,以便在其他项目中轻松使用它。这样我就可以在其他项目中引用 NuGet 包了。 这样我就可以动态地组合一组要部署到 Azure Functions 服务的 Azure Functions。
目前可以吗?或者,可以发挥作用,例如在外部程序集中定义,并由 Azure Function 主机“获取”?
我知道这可以通过 Azure WebJobs 实现,但我还没有找到使用 Azure Functions 实现相同结果的方法。
Azure 函数主机在 host 的同一程序集中发现函数入口点(由 运行 方法中的 FunctionName 注释)。因此,您只能将所有可重用代码外部化为单独的 nuget,但仍需要为主机中的每个函数定义入口点。函数体可能只是调用您的可重用资产的最小包装器,但需要存在于主机中。 您介意分享更多有关您尝试解决的场景的信息吗?
编辑:感谢@Nsevens 的尝试。 .csproj 中的 <FunctionsInDependencies>true</FunctionsInDependencies>
将从依赖项加载函数。应该有一个显式调用来自主机的依赖项的某些方法(可能只是一个 noop 方法),以使其成为编译器的硬依赖项。我没有看到有关此的任何官方文档。
在 .csproj
文件中添加 <FunctionsInDependencies>true</FunctionsInDependencies>
似乎可以解决问题。
请确保您确实在代码中的某处 调用了依赖项(例如在Startup.cs
中),以确保程序集不会被编译器优化掉。