C# Azure函数-共享类
我想在Azure函数上使用一些共享类来避免代码重复 我尝试创建一个空的C#函数,并在函数内创建类,然后使用以下命令导入到其他函数:C# Azure函数-共享类,c#,azure,azure-functions,C#,Azure,Azure Functions,我想在Azure函数上使用一些共享类来避免代码重复 我尝试创建一个空的C#函数,并在函数内创建类,然后使用以下命令导入到其他函数: #r./Shared/Class.cs”首先,将共享代码放入函数应用程序目录根目录下的文件夹中(例如“Shared”)。假设我在该文件夹中放置了一个共享的Message.csx类(例如,完整路径D:\home\site\wwwroot\shared\Message.csx) 要将其包含到函数中,请使用#load命令: #load "..\Shared\Message
#r./Shared/Class.cs”
首先,将共享代码放入函数应用程序目录根目录下的文件夹中(例如“Shared”)。假设我在该文件夹中放置了一个共享的Message.csx
类(例如,完整路径D:\home\site\wwwroot\shared\Message.csx
)
要将其包含到函数中,请使用#load
命令:
#load "..\Shared\Message.csx"
using System;
using Microsoft.Azure.WebJobs.Host;
public static void Run(Message message, TraceWriter log)
{
log.Info($"C# Queue trigger function processed message: {message.Id}");
}
有关更多信息,请参阅帮助页。默认情况下,不会跟踪该目录中的文件的更改。如果要确保当该目录中的文件发生更改时,您的函数将接收更改并重新编译,则可以将“共享”目录添加到host.json
中的watchDirectories
列表中。例如:
{
"watchDirectories": [ "Shared" ]
}
由于Azure函数的变化率,这不再是C#函数的推荐方法(请参阅)。请参阅以下博客文章,了解在visual studio中构建C#项目的最现代、最高效的模式,并以通常在C#中的方式获得共享DLL的所有优势
在Visual Studio中工作并寻找在函数应用程序中的函数之间共享某些C#脚本文件的方法时,如下所示:
#load "..\Shared\MySharedCode.csx"
请注意,您应该将共享文件夹中文件的“复制到输出目录”属性设置为“始终复制”。考虑到Azure函数是新的,并且还没有适当的文档,让我以更人性化的方式回答这个问题 让我们一步一步走
在该文件夹中,您还可以创建其他文件夹、类(如果需要), 例如,如果您想在Azure函数之间重用模型类,那么创建一个名为“Models”的附加文件夹,并将所需的类放在那里
*.csx
文件后,您可以编辑该文件并将代码放在其中并保存:
#load
,在Azure函数中重新使用该类:
注意:
另一种方法是将VisualStudio与Microsoft DevOps CI/CD一起使用。在那里,同样的操作将非常简单明了。如何在wwwroot文件夹上创建共享文件夹?我有FTP访问权限,但只能以只读模式访问。请按照上的说明使用Kudu访问功能应用程序的文件系统。您也可以使用应用服务编辑器,如图所示。工作!谢谢大家!@LuísFura如果回答了您的问题,请接受这篇文章:)是否可以单独部署共享代码。链接的博客仅将发布.NET类库描述为一种功能应用程序,作为“为那些认为类库更适合其应用程序的客户”的另一种方式。但是工具还没有准备好“你今天可以尝试预编译函数,对你的项目进行一些手动调整”。感谢你分享这些链接,但我不同意你无条件的“最现代、最高效的C#项目结构模式”“事实上,我本可以通过提供适当的上下文来更仔细地表达它。因此,更具体地说,在门户中使用CSX脚本的Azure函数应用程序中使用多个共享类和nuget依赖项很快成为一个挑战,因为函数应用程序变得更加复杂。OP似乎刚刚开始应对这些挑战。因此,许多人发现将FunctionApp作为ASPNET Web应用启动有很多优势。这是微软和至少一位博主推荐的,详细信息可以在上面的链接中找到。