Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Azure函数发布为NuGet包(或从外部程序集加载函数)_C#_.net_Azure_Azure Functions_Azure Webjobs - Fatal编程技术网

C# 将Azure函数发布为NuGet包(或从外部程序集加载函数)

C# 将Azure函数发布为NuGet包(或从外部程序集加载函数),c#,.net,azure,azure-functions,azure-webjobs,C#,.net,Azure,Azure Functions,Azure Webjobs,我正在考虑将可重用的Azure函数作为NuGet包发布,以便在其他项目中轻松使用它。这样我就可以在其他项目中引用NuGet包。 通过这种方式,我可以动态地组合一组Azure函数以部署到Azure函数服务 目前是否可能?或者,功能是否可以在外部程序集中定义,并由Azure功能主机“拾取” 我知道这在Azure WebJobs中是可能的,但我还没有找到使用Azure函数实现相同结果的方法。Azure函数主机在主机的同一程序集中发现函数入口点(在运行方法中由FunctionName注释)。因此,您只能

我正在考虑将可重用的Azure函数作为NuGet包发布,以便在其他项目中轻松使用它。这样我就可以在其他项目中引用NuGet包。 通过这种方式,我可以动态地组合一组Azure函数以部署到Azure函数服务

目前是否可能?或者,功能是否可以在外部程序集中定义,并由Azure功能主机“拾取”


我知道这在Azure WebJobs中是可能的,但我还没有找到使用Azure函数实现相同结果的方法。

Azure函数主机在主机的同一程序集中发现函数入口点(在运行方法中由FunctionName注释)。因此,您只能将所有可重用代码外部化为单独的NUGET,但仍然需要为主机中的每个函数定义入口点。然后,函数体可能只是调用可重用资产的最小包装器,但需要存在于主机中。 您是否介意与我们分享更多关于您正在尝试解决的场景的信息


编辑:感谢@Nsevens尝试这一点<.csproj中的code>true将从依赖项加载函数。主机应该显式调用依赖项的某个方法(可能只是noop方法),使其成为编译器的硬依赖项。我没有看到任何关于此的官方文档。

Azure函数主机在主机的同一程序集中发现函数入口点(在运行方法中由FunctionName注释)。因此,您只能将所有可重用代码外部化为单独的NUGET,但仍然需要为主机中的每个函数定义入口点。然后,函数体可能只是调用可重用资产的最小包装器,但需要存在于主机中。 您是否介意与我们分享更多关于您正在尝试解决的场景的信息

编辑:感谢@Nsevens尝试这一点<.csproj中的code>true将从依赖项加载函数。主机应该显式调用依赖项的某个方法(可能只是noop方法),使其成为编译器的硬依赖项。我没有看到任何关于这方面的官方文档。

.csproj
文件中添加
true
,似乎可以解决这个问题

一定要确保在代码中的某个地方(例如在
Startup.cs
中)调用依赖项,以确保程序集没有被编译器优化。

.csproj
文件中添加
true
,似乎可以做到这一点


请确保您确实在代码中的某个位置调用了依赖项(例如在
Startup.cs
),以确保编译器没有优化程序集。

您好,谢谢您的回复。我们正在开发模块化产品ish应用程序,每个客户都有动态实现。例如,客户A具有自动删除和自动存档功能,客户B仅具有自动存档功能。按照我所描述的方式,我们可以创建一个客户解决方案,只需将所需的azure功能添加到它们的特定实现中。感谢您的解释。嗯,似乎有一种方法,但有点黑客(当然没有文档或支持:)。生成包含函数的C#项目时,它会在生成输出中为每个函数生成一个文件夹(文件夹名称与函数名称相同)。它包含function.json,它描述了运行时要理解和加载的函数。如果您可以在部署之前(比如通过一些cmd或脚本)以某种方式将其复制到目标主机应用程序中,然后部署主机应用程序,那么它似乎可以工作。但正如我所说的,这是一个有点骇人的解决方案。嗨@KrishnenduGhosh MSFT,我遇到了
true
项目属性。这似乎使这一方案可行。这是受支持的属性吗?还是不应该这样使用?最好能确认一下:)函数依赖项在任何发布的文档中都没有记录。当我尝试自己时,它不起作用。我想它可能还没有发布。我不会依赖它,如果它计划成为未来的功能,除非正式宣布的地方。如果您有任何工作样本,请与我们分享。我将与相关文档()作者协调,并会回来。您好,谢谢您的回复。我们正在开发模块化产品ish应用程序,每个客户都有动态实现。例如,客户A具有自动删除和自动存档功能,客户B仅具有自动存档功能。按照我所描述的方式,我们可以创建一个客户解决方案,只需将所需的azure功能添加到它们的特定实现中。感谢您的解释。嗯,似乎有一种方法,但有点黑客(当然没有文档或支持:)。生成包含函数的C#项目时,它会在生成输出中为每个函数生成一个文件夹(文件夹名称与函数名称相同)。它包含function.json,它描述了运行时要理解和加载的函数。如果您可以在部署之前(比如通过一些cmd或脚本)以某种方式将其复制到目标主机应用程序中,然后部署主机应用程序,那么它似乎可以工作。但正如我所说的,这是一个有点骇人的解决方案。嗨@KrishnenduGhosh MSFT,我遇到了
true
项目属性。这似乎使这一方案可行。这是受支持的属性吗?还是不应该这样使用?最好能确认一下:)函数依赖项在任何发布的文档中都没有记录。当我尝试自己时,它不起作用。我想它可能还没有发布。我不会依赖它,如果它计划成为未来的功能,除非正式宣布的地方。如果你有任何工作样品,你介意和我分享吗?我会与你协调