对 .NET 应用进行现代化改造

由 Gemini 生成式 AI 模型提供支持的 .NET 代码现代化改造是一种代码生成和应用现代化改造工具。它通过将应用重构为跨平台 .NET 代码,帮助您对依赖于 Windows 的 Microsoft .NET Framework 应用进行现代化改造。

与 .NET Framework 应用不同,跨平台 .NET 应用可以在 Linux 上运行,无需 Windows 许可,并支持容器化等云原生功能。

在本指南中,您将为您的 Google Cloud 项目授予 IAM 角色,创建 Cloud Storage 存储桶,创建 Gemini API 密钥,并在本地 机器上安装 code-modernization-for-dotnet 扩展程序,以将 .NET Framework 应用重构为跨平台 .NET 代码。

准备工作

  1. 如果您还没有 Google 账号,请创建一个。您可以使用任何电子邮件地址(包括工作电子邮件地址) 创建 Google 账号。
  2. 提交 Code Modernization for .NET:许可名单请求表单,以加入许可名单。在此请求获得批准之前,您无法继续执行此页面上的步骤。
  3. 登录您的 Google Cloud 账号。如果您是 Google Cloud的新用户, 请创建一个账号,以评估我们的产品在 实际场景中的表现。新客户还可以获得 300 美元的免费抵用金,用于 运行、测试和部署工作负载。
  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Build, Secret Manager, Cloud Storage JSON API, Generative Language API, Cloud Logging, and Compute Engine APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Enable the Cloud Build, Secret Manager, Cloud Storage JSON API, Generative Language API, Cloud Logging, and Compute Engine APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  10. 如果您尚未安装 VS Code,请进行安装。

授予 Identity and Access Management (IAM) 角色

控制台

  1. 如需为您的 Google Cloud 项目授予 IAM 角色, 请前往 IAM 和管理 页面。

    进入“IAM 和管理”

  2. 添加以下 IAM 角色:

  • 用户权限

    • Storage Object User (roles/storage.objectUser)
    • Cloud Build Editor (roles/cloudbuild.builds.editor)
  • Cloud Build 服务账号

    • Cloud Build Service Account (roles/cloudbuild.builds.builder)
    • Secret Manager Accessor (roles/secretmanager.secretAccessor)
    • Logs Writer (roles/logging.logWriter)
    • Storage Object User (roles/storage.objectUser)

gcloud

如需添加所需的 IAM 角色,请运行以下 gcloud 命令:

  • 分配 Storage Object User (roles/storage.objectUser) 角色:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:USER_ID" \
    --role="roles/storage.objectUser"
    
  • 分配 Cloud Build Editor (roles/cloudbuild.builds.editor) 角色:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:USER_ID" \
    --role="roles/cloudbuild.builds.editor"
    
  • 分配 Cloud Build Service Account (roles/cloudbuild.builds.builder) 角色:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT" \
      --role="roles/cloudbuild.builds.builder"
    
  • 分配 Secret Manager Accessor (roles/secretmanager.secretAccessor) 角色:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT" \
      --role="roles/secretmanager.secretAccessor"
    
  • 分配 Logs Writer (roles/logging.logWriter) 角色:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT" \
      --role="roles/logging.logWriter"
    
  • 分配 Storage Object User (roles/storage.objectUser) 角色:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT" \
      --role="roles/storage.objectUser"
    

创建 Cloud Storage 存储桶

如需创建 Cloud Storage 存储桶,请运行以下命令:

gcloud storage buckets create gs://BUCKET_NAME \
--project=PROJECT_ID

创建 Gemini API 密钥并将其保存在 Secret Manager 中

如需创建 Gemini API 密钥,请运行以下命令:

gcloud services api-keys create --project=PROJECT_ID \
  --display-name="API Key for .Net Modernization" \
  --api-target="service=generativelanguage.googleapis.com" \
  --key-id="gemini-api-key"

如需将 Gemini API 密钥保存在 Secret Manager 中,请运行以下命令:

gcloud services api-keys get-key-string gemini-api-key \
--project=PROJECT_ID \
--format="value(keyString)" | \

gcloud secrets create "gemini-api-key" \
--project=PROJECT_ID \
--data-file=- \
--replication-policy="automatic"

安装和配置扩展程序

您的 Code Modernization for .NET: Allowlist Request form 获得批准后,您将收到一个 .VSIX 文件形式的扩展程序。如需将该扩展程序安装到本地机器,请按以下步骤操作:

  1. 在 VS Code 中,找到活动栏中的扩展程序

  2. 点击 more_horiz 视图和更多 操作 ,然后选择从 VSIX 安装

  3. 找到并选择 VSIX 软件包文件。这会启动在本地机器上的 VS Code 中安装 Code-modernization-for-dotnet 扩展程序。

  4. 安装完成后,重启 VS Code。

  5. Code Modernization for .NET extension 设置更新为以下值:

    • 扩展程序模式: Version 2
    • 项目 IDPROJECT_ID
    • 存储分区名称BUCKET_NAME
    • 区域: us-central1
    • Gemini API 密钥gemini-api-key
    • Google 账号: GOOGLE_ACCOUNT
    • 目标框架: .NET 8.0

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID,例如 1234567890
    • BUCKET_NAME:Cloud Storage 存储桶的名称。
    • GOOGLE_ACCOUNT:您的 Google 账号,例如 your_full_name@gmail.com

触发 build

  1. 如需登录 Google Cloud,请运行以下命令:

    gcloud auth login --update-adc
    
  2. 如需触发现代化改造工作流,请在活动栏中选择源代码控制,点击more_horiz 更多操作以打开上下文菜单,然后选择Google Cloud:对 .NET 代码进行现代化改造

将项目添加到许可名单

如需将项目添加到许可名单,请将 Cloud Build 服务账号 ID 通过电子邮件发送至 code-modernization-for-dotnet-discuss@google.com

您还可以通过同一电子邮件地址获取支持、提出问题或提供反馈。