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

Code Modernization for .NET 是一款由 Gemini 生成式 AI 模型提供支持的代码生成和应用现代化改造工具。它通过将应用重构为跨平台 .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. 提交 .NET 代码现代化:许可名单申请表单,即可加入许可名单。在此请求获得批准之前,您无法继续执行本页面上的步骤。
  3. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    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.

    Enable the APIs

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

    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.

    Enable the APIs

  10. 安装 VS Code(如果尚未安装)。
  11. 授予 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 服务账号 (roles/cloudbuild.builds.builder)
      • Secret Manager Viewer (roles/secretmanager.viewer)
      • 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 中,请运行以下命令:

    echo -n "(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"
    

    安装和配置扩展程序

    .NET 代码现代化:许可名单申请表单获得批准后,您将收到扩展程序(以 .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 设置更新为以下内容:

      • 扩展模式LocalGit (experimental)
      • Project IDPROJECT_ID
      • 存储分区名称BUCKET_NAME
      • 区域us-central1
      • Gemini API Secretgemini-api-key-secret-name
      • 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

    您还可以通过同一电子邮件地址联系支持团队,提出问题或提供反馈。