# 打包代码

> Package your C# code into compression files before you deploy as a live Cloud Code module.


**Frame:**
![](/api/media?file=/cloud-code/media/images/cloud-code-manual-module-publishing-workflow.svg)

要部署模块，必须将代码打包到存档中。存档可以是 .ccm 文件或 .zip 文件，具体取决于用于部署模块的创作方法。.ccm 文件其实就是扩展名为 .ccm 的 ZIP 文件。

* [使用 UGS CLI 进行部署](./write-modules/cli.md)时需要将代码打包到 .ccm 文件中。
* [使用 Cloud Code Admin API 进行部署](./write-modules/rest-api.md)时接受 .ccm 文件或 .zip 文件。

存档中只能包含要在 x64 Linux 上运行的经过打包的程序集。

请参阅 [Cloud Code 限制](../reference/limits)以检查存储限制。

> **Important:**
>
> **重要**：这是一个更先进的工作流程。对于大多数用例，您可以使用 [Unity 编辑器](./write-modules/unity-editor.md)或 [UGS CLI](./write-modules/cli.md) 通过自动打包来部署模块，并跳过此步骤。

## Ready to Run (R2R) 编译##ready-to-run-r2r-compilation

在为模块项目生成程序集时，可以启用 Ready to Run 编译。该选项可以略微缩短模块的冷启动时间，但不会改善第一次调用后的响应时间。该选项还会增加程序集的大小。请查看有关 [ReadyToRun 编译](https://learn.microsoft.com/en-us/dotnet/core/deploying/ready-to-run)的 Microsoft 文档以了解更多详细信息。

## 生成程序集##producing-assemblies

要生成此格式的程序集，请使用 .NET 命令行界面 (CLI) 或集成开发环境（如 JetBrains Rider 或 Microsoft Visual Studio），如以下各节所述。务必仅为包含 Cloud Code 模块终端的[主模块项目](./module-structure.md)生成程序集。

> **Note:**
>
> **注意**：建议使用 .NET 6.0。

### 使用 .NET 命令行界面##using-the-net-command-line-interface

要使用 .NET CLI 生成程序集，请使用 `dotnet publish` 命令。请参阅有关 [dotnet publish](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-publish) 的 Microsoft 文档以了解更多详细信息。

```sh
dotnet publish -c Release -r linux-x64 -p:PublishReadyToRun=true
```

您可以通过添加 `<PublishReadyToRun>` 设置来指定项目中的目标平台和 R2R 编译。

```xml
<PropertyGroup>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
```

使用以下命令发布模块：

```sh
dotnet publish -c Release -r linux-x64
```

默认情况下，此命令会在 `bin/Release/net6.0/linux-x64/publish` 文件夹中生成程序集。

### 使用 Microsoft Visual Studio##using-microsoft-visual-studio

您可以使用 Microsoft Visual Studio 生成程序集。为此，请按照下列步骤操作：

1. 右键单击模块的 C# 项目，然后从菜单中选择 **Publish（发布）**。
2. 在 **Publish（发布）** 页面上执行以下操作：
   1. 选择 **Folder（文件夹）** 作为目标，然后选择 **Next（下一步）**。
   2. 选择 **Folder（文件夹）** 作为具体目标，然后选择 **Next（下一步）**。
   3. 选择 **Finish（完成）**。
   4. 在 Publish profile creation progress（发布配置文件创建进度）页面上，选择 **Close（关闭）**。
   5. 在 Publish（发布）窗口的 Publish（发布）选项卡中，选择 **Show all settings（显示所有设置）**。
   6. 确保目标运行时为 `linux-x64`。
   7. （可选）确保 PublishReadyToRun 已激活。
   8. 选择 **Publish（发布）**。

如需了解更多详细信息，请查看 Microsoft 文档中的[使用 Visual Studio 发布 .NET 控制台应用程序](https://learn.microsoft.com/en-us/dotnet/core/tutorials/publishing-with-visual-studio?pivots=dotnet-7-0)教程。

### 使用 JetBrains Rider##using-jetbrains-rider

您可以使用 JetBrains Rider 生成程序集。为此，请按照下列步骤操作：

1. 打开 **Run（运行）**> **Edit Configurations...（编辑配置...）**，或从导航栏中选择 **Edit Configurations（编辑配置）**。
2. 选择 **+** > **Add New Configuration（添加新配置）**。
3. 选择 **Publish to folder（发布到文件夹）** 配置类型。
4. 将 **Target runtime（目标运行时）** 设置为 `linux-x64`。
5. （可选）激活 **Enable ReadyToRun compilation（启用 ReadyToRun 编译）**。
6. 选择 **Apply（应用）** 以保存配置。
7. 准备好发布模块时，在工具栏上选择创建的运行配置，然后选择 **Run（运行）**。

如需了解更多详细信息，请查看 JetBrains Rider 文档中的[将 .NET 应用程序发布到文件夹](https://www.jetbrains.com/help/rider/Run_Debug_Configuration_Publish_to_Folder.html)。

## 打包程序集##packaging-the-assemblies

生成这些程序集后，应将它们压缩到存档中。如果计划使用 UGS CLI 进行部署，可以将存档文件扩展名设置为 .ccm。

> **Note:**
>
> **注意**：如果是在 Windows 中使用文件资源管理器，必须[启用通用文件扩展名](https://support.microsoft.com/en-us/windows/common-file-name-extensions-in-windows-da4a4430-8e76-89c5-59f7-1cdbbc75cb01)以将存档文件扩展名更改为 .ccm。

存档的结构应如下所示：

```text
MyModule.ccm
├─ MyModule.dll
├─ MyModule.deps.json
├─ Dependency1.dll
├─ Dependency2.dll
└─ ...
```

默认情况下，这将包括 Cloud Code NuGet 包的依赖项。

> **Note:**
>
> **注意**：生成的程序集还包含 .pdb 文件。这些文件是生成带有行号的堆栈跟踪所必需的文件。但是，运行模块时不需要这些文件。

然后，您可以使用 [UGS CLI](./write-modules/cli.md#deploy-modules) 或 [Cloud Code Admin API](./write-modules/rest-api.md#deploy-modules) 来部署存档。
