

# 使用 .zip 文件归档构建和部署 C\$1 Lambda 函数
<a name="csharp-package"></a>

.NET 部署包（.zip 文件存档），包含您的函数的已编译程序集以及其所有程序集依赖项。该程序包还包含一个 `proj.deps.json` 文件。这将向 .NET 运行时系统告知您的所有函数的依赖项和 `proj.runtimeconfig.json` 文件，后者用于配置运行时系统。

要部署单个 Lambda 函数，您可以使用 `Amazon.Lambda.Tools` .NET Lambda Global CLI。使用 `dotnet lambda deploy-function` 命令会自动创建.zip 部署包并将其部署到 Lambda。但是，建议您使用类似 AWS Serverless Application Model（AWS SAM）或 AWS Cloud Development Kit (AWS CDK) 等框架来将 .NET 应用程序部署到 AWS。

无服务器应用程序通常由 Lambda 函数和其他托管 AWS 服务 组合而成，它们共同执行特定的业务任务。AWS SAM 和 AWS CDK 简化了使用其他 AWS 服务 大规模构建和部署 Lambda 函数的过程。[AWS SAM 模板规范](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification.html)提供了一种简单而干净的语法，用于描述构成无服务器应用程序的 Lambda 函数、API、权限、配置和其他 AWS 资源。使用 [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)，您可以将云基础设施定义为代码，以帮助您借助 .NET 等现代编程语言和框架，在云中构建可靠、可扩展且成本高效的应用程序。AWS CDK 和 AWS SAM 都使用 .NET Lambda Global CLI 来打包您的函数。

尽管可以[使用 .NET Core CLI](csharp-package-cli.md#csharp-layers) 将 [Lambda 层](chapter-layers.md)与 C\$1 中的函数结合使用，但我们不建议这样做。C\$1 中使用层的函数会在 [Init 阶段](lambda-runtime-environment.md#runtimes-lifecycle-ib) 期间将共享程序集手动加载到内存中，而这可能会增加冷启动时间。相反，在编译时包含所有共享代码，以避免在运行时加载程序集对性能造成影响。

您可以在以下各节中找到有关使用 AWS SAM、AWS CDK 和 .NET Lambda Global CLI 构建和部署 .NET Lambda 函数的说明。

**Topics**
+ [使用 .NET Lambda Global CLI](csharp-package-cli.md)
+ [使用 AWS SAM 部署 C\$1 Lambda 函数](csharp-package-sam.md)
+ [使用 AWS CDK 部署 C\$1 Lambda 函数](csharp-package-cdk.md)
+ [部署 ASP.NET 应用程序](csharp-package-asp.md)