本文介绍如何在.NET运行环境编译程序,并打包为ZIP包。编译打包完成后,您可以在函数计算控制台或使用Serverless Devs工具上传代码包。
C#运行时依赖库
您可以通过
Nuget程序包获得以上依赖库,将其添加到您的
<YourProjectName>.csproj文件中。如下所示。
<ItemGroup>
<PackageReference Include="Aliyun.Serverless.Core" Version="1.0.1" />
<PackageReference Include="Aliyun.Serverless.Core.Http" Version="1.0.3" />
</ItemGroup>
使用.NET Core CLI工具编译并部署程序
.NET Core部署程序包,需要包含您的函数的已编译程序集以及其所有程序集的依赖项。您可以直接使用.NET Core CLI工具编译程序。使用 .NET Core
CLI工具,您可以通过跨平台方式创建基于.NET的函数计算应用程序。具体操作,请参见.NET。
前提条件
创建服务步骤一:创建.NET项目
- 执行以下命令创建.NET项目。
dotnet new console -o HelloFcApp -f netcoreapp3.1
参数解析如下。
- new console:推荐使用控制台应用程序模板。
- -o|--output:项目的输出位置。本文示例中,会创建一个HelloFcApp目录,并将项目内容放置到该目录下。
- -f|--framework:指定使用的.NET版本。如果运行时版本为.NET Core 3.1,该参数使用netcoreapp3.1;如果运行时版本为.NET Core 2.1,该参数使用netcoreapp2.1。
创建完成后,项目目录结构如下所示。
HelloFcApp
├── HelloFcApp.csproj
├── Program.cs
└── obj
- 在项目目录下,根据实际情况修改文件的参数配置。
- HelloFcApp.csproj文件
.NET工程的配置文件,记录了项目的目标框架、程序集的依赖库等信息。您需要在该文件中添加函数计算提供的依赖库,示例如下。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Aliyun.Serverless.Core" Version="1.0.1" />
<PackageReference Include="Aliyun.Serverless.Core.Http" Version="1.0.3" />
</ItemGroup>
</Project>
- Program.cs文件
您的请求处理程序代码,具体设置可参考事件请求处理程序(Event Handler)或HTTP请求处理程序(HTTP Handler)。本文以使用Stream类型的事件请求处理程序为例。
using System.IO;
using System.Threading.Tasks;
using Aliyun.Serverless.Core;
using Microsoft.Extensions.Logging;
namespace Example
{
public class Hello
{
public async Task<Stream> StreamHandler(Stream input, IFcContext context)
{
IFcLogger logger = context.Logger;
logger.LogInformation("Handle request: {0}", context.RequestId);
MemoryStream copy = new MemoryStream();
await input.CopyToAsync(copy);
copy.Seek(0, SeekOrigin.Begin);
return copy;
}
static void Main(string[] args){}
}
}
步骤二:编译.NET项目
- 执行以下命令,进入项目目录并编译项目,然后将结果输出到target目录下。
cd HelloFcApp && dotnet publish -c Release -o ./target
- 执行以下命令,进入target目录并进行打包。
cd target && zip -r HelloFcApp.zip *
打包完成后,ZIP包的结构如下所示。
HelloFcApp.zip
├── Aliyun.Serverless.Core.dll
├── HelloFcApp.deps.json
├── HelloFcApp.dll
├── HelloFcApp.pdb
├── HelloFcApp.runtimeconfig.json
└── Microsoft.Extensions.Logging.Abstractions.dll
重要 请确保已将HelloFcApp.dll等文件打包至ZIP文件的根目录。
步骤三:部署项目代码并验证
- 登录函数计算控制台,在左侧导航栏,单击服务及函数。
- 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务。
- 在函数管理页面,单击创建函数。
- 在创建函数页面,选择使用内置运行时创建,设置函数相关配置项,然后单击创建。
主要配置项说明如下,其余配置项选择默认值即可。
- 请求程序处理类型:选择处理事件请求。
- 运行环境:选择.NET Core 3.1。
- 代码上传方式:选择通过 ZIP 包上传代码,然后上传C#运行时依赖库打包的ZIP文件。
- 请求处理程序:设置为
HelloFcApp::Example.Hello::StreamHandler
。关于请求处理程序的格式说明,请参见请求处理程序(Handler)。
创建完成后,跳转至函数详情页面的函数代码页签。
- 在函数详情页面的函数代码页签,单击测试函数。
成功执行后返回以下结果。
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
您还可以单击
日志输出页签查看详细日志。