Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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函数-共享类_C#_Azure_Azure Functions - Fatal编程技术网

C# Azure函数-共享类

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

我想在Azure函数上使用一些共享类来避免代码重复

我尝试创建一个空的C#函数,并在函数内创建类,然后使用以下命令导入到其他函数:


#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功能“平台功能”部分

  • 然后导航到开发工具->高级工具

  • 接下来,导航到工具->压缩推送部署

  • 接下来,在根文件夹中创建一个名为“Shared”的文件夹,如中所建议的:


  • 在该文件夹中,您还可以创建其他文件夹、类(如果需要), 例如,如果您想在Azure函数之间重用模型类,那么创建一个名为“Models”的附加文件夹,并将所需的类放在那里

  • 创建
    *.csx
    文件后,您可以编辑该文件并将代码放在其中并保存:

  • 然后使用
    #load
    ,在Azure函数中重新使用该类:


  • 注意:

    另一种方法是将VisualStudio与Microsoft DevOps CI/CD一起使用。在那里,同样的操作将非常简单明了。

    如何在wwwroot文件夹上创建共享文件夹?我有FTP访问权限,但只能以只读模式访问。请按照上的说明使用Kudu访问功能应用程序的文件系统。您也可以使用应用服务编辑器,如图所示。工作!谢谢大家!@LuísFura如果回答了您的问题,请接受这篇文章:)是否可以单独部署共享代码。链接的博客仅将发布.NET类库描述为一种功能应用程序,作为“为那些认为类库更适合其应用程序的客户”的另一种方式。但是工具还没有准备好“你今天可以尝试预编译函数,对你的项目进行一些手动调整”。感谢你分享这些链接,但我不同意你无条件的“最现代、最高效的C#项目结构模式”“事实上,我本可以通过提供适当的上下文来更仔细地表达它。因此,更具体地说,在门户中使用CSX脚本的Azure函数应用程序中使用多个共享类和nuget依赖项很快成为一个挑战,因为函数应用程序变得更加复杂。OP似乎刚刚开始应对这些挑战。因此,许多人发现将FunctionApp作为ASPNET Web应用启动有很多优势。这是微软和至少一位博主推荐的,详细信息可以在上面的链接中找到。