Todos os produtos
Search
Central de documentação

Function Compute:Compile e implante um pacote de código

Última atualização: Jun 29, 2026

Compile seu projeto C#/.NET localmente, empacote-o em um arquivo ZIP e implante-o no Function Compute usando o console ou o Serverless Devs.

Biblioteca de dependências

O Function Compute fornece a biblioteca Aliyun.Serverless.Core para o runtime C#. Utilize-a para definir a interface do handler, o objeto de contexto e os tipos relacionados.

Obtenha a biblioteca no NuGet e adicione-a ao arquivo <YourProjectName>.csproj:

<ItemGroup>
  <PackageReference Include="Aliyun.Serverless.Core" Version="1.0.1" />
  <PackageReference Include="Aliyun.Serverless.Core.Http" Version="1.0.3" />
</ItemGroup>

Runtimes suportados

Versão do .NET

**Valor da flag -f**

.NET Core 3.1

netcoreapp3.1

.NET Core 2.1

netcoreapp2.1

Escolha um método de implantação

Método

Mais indicado para

.NET Core CLI + console

Implantações pontuais e aprendizado da plataforma

Serverless Devs

Implantações recorrentes e pipelines de CI/CD

Implante com o .NET Core CLI

Utilize o .NET Core CLI para criar aplicações .NET multiplataforma e implantá-las no Function Compute. Para instruções de instalação, consulte .NET.

Etapa 1: Crie um projeto .NET

  1. Crie um novo projeto de console:

    Parâmetro

    Descrição

    new console

    Usa o modelo de aplicação de console

    -o HelloFcApp

    Cria o diretório HelloFcApp para o projeto

    -f netcoreapp3.1

    Define como alvo o .NET Core 3.1. Use netcoreapp2.1 para .NET Core 2.1

    dotnet new console -o HelloFcApp -f netcoreapp3.1

    O comando cria a seguinte estrutura:

    HelloFcApp
    ├── HelloFcApp.csproj   # Project configuration: target framework and dependencies
    ├── Program.cs          # Handler code
    └── obj                 # Intermediate build files
  2. Atualize o arquivo HelloFcApp.csproj para incluir a biblioteca de dependências do Function Compute:

    <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>
  3. Substitua o conteúdo de Program.cs pelo seu código de handler. O exemplo abaixo utiliza um handler de eventos do tipo Stream. Para outros tipos de handler, consulte Handlers.

    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){}
        }
    }

Etapa 2: Compile e empacote

  1. Compile o projeto e grave a saída no diretório target:

    cd HelloFcApp && dotnet publish -c Release -o ./target
  2. Empacote a saída compilada em um arquivo ZIP:

    Importante

    Execute zip -r HelloFcApp.zip * de dentro do diretório target, e não de seu diretório pai. Se você compactar a pasta target em vez de seu conteúdo, o Function Compute não conseguirá localizar o arquivo HelloFcApp.dll no caminho raiz esperado, e a função falhará ao iniciar.

    cd target && zip -r HelloFcApp.zip *

    O arquivo ZIP contém os seguintes arquivos:

    HelloFcApp.zip
    ├── Aliyun.Serverless.Core.dll
    ├── HelloFcApp.deps.json
    ├── HelloFcApp.dll
    ├── HelloFcApp.pdb
    ├── HelloFcApp.runtimeconfig.json
    └── Microsoft.Extensions.Logging.Abstractions.dll

Etapa 3: Implante e verifique

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Functions.

  2. Na barra de navegação superior, selecione uma região. Na página Functions, clique em Create Function.

  3. Na página Create Function, selecione Event Function, configure os parâmetros a seguir e clique em Create. Após a criação da função, a aba Code da página Function Details será aberta automaticamente.

    Parâmetro

    Valor

    Runtime

    .NET Core 3.1

    Code Upload Method

    Upload ZIP — selecione o arquivo HelloFcApp.zip da Etapa 2

    Handler

    HelloFcApp::Example.Hello::StreamHandler — para o formato do handler, consulte Handlers

  4. Na aba Code, clique em Test Function. Uma execução bem-sucedida retorna:

    {
        "key1": "value1",
        "key2": "value2",
        "key3": "value3"
    }

    Para visualizar os logs de execução, clique na aba Log Output.

Implante com o Serverless Devs

O Serverless Devs automatiza as etapas de compilação e implantação, sendo ideal para fluxos de trabalho recorrentes e pipelines de CI/CD.

Pré-requisitos

Antes de começar, certifique-se de ter:

Implante e verifique

  1. Inicialize o projeto:

    s init

    Quando solicitado, selecione Alibaba Cloud como provedor de nuvem, escolha um modelo .NET e especifique o runtime, a região e o nome da função.

  2. Acesse o diretório do projeto:

    cd start-fc3-dotnetcore

    O projeto possui a seguinte estrutura:

    start-fc3-dotnetcore
    ├── HelloFcApp
    │   ├── bin                    # Compiled binaries
    │   ├── obj                    # Intermediate build files
    │   ├── target                 # Publish output
    │   ├── HelloWorldApp.csproj   # Project configuration
    │   └── Program.cs             # Handler code
    ├── readme
    └── s.yaml                     # Serverless Devs configuration
  3. Implante o projeto:

    s deploy

    Uma implantação bem-sucedida exibe a configuração da função:

    s.yaml: /root/start-fc3-dotnetcore/s.yaml
    Downloading[/v3/packages/fc3/zipball/0.0.24]...
    Download fc3 successfully
      Steps for [deploy] of [hello-world-app]
    ====================
    Microsoft (R) Build Engine version 16.7.3+2f374e28e for .NET
    Copyright (C) Microsoft Corporation. All rights reserved.
    
      Determining projects to restore...
      Restored /root/start-fc3-dotnetcore/HelloWorldApp/HelloWorldApp.csproj (in 154 ms).
      HelloWorldApp -> /root/start-fc3-dotnetcore/HelloWorldApp/bin/Release/netcoreapp3.1/HelloWorldApp.dll
      HelloWorldApp -> /root/start-fc3-dotnetcore/HelloWorldApp/target/
    
     [hello_world] completed (2.66s)
    
     Result for [deploy] of [hello-world-app]
    ====================
    region:         cn-hangzhou
    description:    hello world by serverless devs
    functionName:   start-dotnetcore-p6jp
    handler:        HelloWorldApp::Example.Hello::StreamHandler
    internetAccess: true
    memorySize:     128
    role:
    runtime:        dotnetcore3.1
    timeout:        10
    
    A complete log of this run can be found in: /root/.s/logs/0327105651
  4. Teste a função:

    sudo s invoke

    Uma invocação bem-sucedida retorna:

    Steps for [invoke] of [hello-world-app]
    ====================
    ========= FC invoke Logs begin =========
    FunctionCompute dotnetcore3.1 runtime inited.
    FC Invoke Start RequestId: 1-6603951e-157f3f32-7fe6f248d7d0
    hello world!
    FC Invoke End RequestId: 1-6603951e-157f3f32-7fe6f248d7d0
    
    Duration: 117.33 ms, Billed Duration: 118 ms, Memory Size: 128 MB, Max Memory Used: 13.16 MB
    ========= FC invoke Logs end =========
    
    Invoke instanceId: c-6603951e-15f440b6-2df37e4bf046
    Code Checksum: 13273801077182424526
    Qualifier: LATEST
    RequestId: 1-6603951e-157f3f32-7fe6f248d7d0
    
    Invoke Result:
    hello world!
    ✔ [hello_world] completed (0.72s)
    
    A complete log of this run can be found in: /root/.s/logs/0327114013