本页面介绍了如何使用 Google Cloud Modernization Hub 评估 ASP.NET 和 .NET Framework 应用,以便进行 Linux 容器化和现代化改造,从而迁移到跨平台 .NET 版本。
许多企业 .NET 应用依赖于 Windows 专用 API、IIS 服务器配置或旧版 .NET Framework 库,这些库会阻止直接部署到 Linux 容器。Modernization Hub 中的自动化评估功能会分析您的源代码,以识别阻碍因素、评估 NuGet 软件包兼容性,并推荐 Cloud Run 或 Google Kubernetes Engine 的重构路径。
如需通过本地计算机运行评估或使用独立的 codmod CLI 自定义报告部分,请参阅创建应用现代化改造评估。
何时使用 .NET 应用评估
如果您计划执行以下任何现代化改造任务,请运行 .NET 应用评估:
- 改换平台到 Linux 容器:在为 Cloud Run 或 GKE 容器化应用之前,请先确定仅限 Windows 的依赖项(例如 Windows 注册表访问、
System.Drawing或 Active Directory 集成)。 - 升级 .NET Framework 版本:评估从 .NET Framework 4.x 迁移到现代跨平台 .NET 版本(.NET 10 或更高版本)时的工作量和兼容性差距。
- 解耦单体式架构:发现需要重构为云原生微服务的紧密耦合 WCF 服务、Windows 服务或旧版 Web 表单。
准备工作
在启动 .NET 评估作业之前,请启用所需的 API、验证项目 Identity and Access Management (IAM) 权限、注册工作区设置存储桶,并将源代码归档上传到 Cloud Storage。
启用必需的 API
如需使用 Modernization Hub,请在项目中启用所需的 Google Cloud服务 API:
gcloud services enable \
aiplatform.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
cloudresourcemanager.googleapis.com \
compute.googleapis.com \
logging.googleapis.com \
storage.googleapis.com \
--project=PROJECT_ID
请将 PROJECT_ID 替换为您的 Google Cloud 项目 ID。
所需的角色
运行评估需要为使用 Cloud Build 和 Gemini Enterprise Agent Platform 的两个身份授予不同的 IAM 权限:
- 经过身份验证的控制台用户(启动作业并访问存储桶):
- Storage Admin (
roles/storage.admin) - Service Account User (
roles/iam.serviceAccountUser) - Cloud Build Editor (
roles/cloudbuild.builds.editor)
- Storage Admin (
- 服务账号(执行评估容器):
- Agent Platform User
(
roles/aiplatform.user) - Storage Object User (
roles/storage.objectUser) 或 Storage Admin (roles/storage.admin)
- Agent Platform User
(
如需获得启动评估和执行分析容器所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
用户 - 管理源代码归档和存储桶配置:Storage Admin (
roles/storage.admin) -
用户 - 将专用服务账号附加到作业:Service Account User (
roles/iam.serviceAccountUser) -
用户 - 提交评估作业 (
cloudbuild.builds.create) 并查看日志:Cloud Build Editor (roles/cloudbuild.builds.editor) -
服务账号 - 执行
codmod容器:Agent Platform User (roles/aiplatform.user) -
服务账号 - 读取源归档和写入评估报告:Storage Object User (
roles/storage.objectUser) 或 Storage Admin (roles/storage.admin)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含启动评估和执行分析容器所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
您需要具备以下权限才能启动评估并执行分析容器:
-
用户(Cloud Storage、Cloud Build 和 IAM):
-
storage.objects.get(用于下载或读取文件) -
storage.objects.list(用于列出存储桶中的文件) -
storage.objects.create(用于上传或创建新文件) -
storage.objects.update(用于修改现有文件的元数据) -
storage.objects.delete(用于删除或覆盖文件) -
storage.buckets.get(查看存储桶级配置) -
cloudbuild.builds.create(用于提交评估作业) -
iam.serviceAccounts.actAs(用于将服务账号附加到作业)
-
-
服务账号(Agent Platform 和 Cloud Storage):
-
aiplatform.endpoints.predict(运行 AI 辅助的代码分析) -
storage.objects.get(用于读取或下载源代码归档) -
storage.objects.list(用于列出输入文件夹中的文件) -
storage.objects.create(用于撰写评估报告) -
storage.objects.delete(删除临时文件)
-
配置工作区设置存储桶
在 Modernization Hub > 设置页面上注册一个指定的 Cloud Storage 存储桶(例如 gs://PROJECT_ID-modernization-hub),用于存储工作区二进制状态文件(dotnet_jobs.pb、java_jobs.pb 和 mainframe_jobs.pb)。
查看代码库大小限制
为了保持最佳性能和成本效益,codmod 评估引擎会强制执行以下规模和归档准则:
- 代码库大小上限:每个评估作业大约 600 万行代码 (LOC)。如果您的代码库超过 600 万行代码,请先将代码库拆分为较小的独立解决方案或模块,然后再上传。
- 干净的归档结构:从 ZIP 文件中排除已编译的二进制文件、软件包缓存和版本控制元数据(例如
bin/、obj/、node_modules/、.vs/和.git/),以便仅分析源文件和 build 配置。
准备并上传 .NET 源代码归档
将 .NET 代码库打包为不包含构建输出的 zip 文件,然后将该文件上传到项目中的 Cloud Storage 存储桶。
在本地机器上,使用以下方法之一创建代码库的 ZIP 文件:
使用 Git(推荐):
git archive --format=zip -o repository.zip HEAD
使用
zipCLI:zip -r repository.zip . \ -x "*.git*" "*/bin/*" "*/obj/*" "*/node_modules/*" "*.vs/*"
使用 Google Cloud CLI 将 ZIP 文件上传到目标 Cloud Storage 存储桶:
gcloud storage cp repository.zip \ gs://INPUT_BUCKET/codebase/repository.zip将 INPUT_BUCKET 替换为目标 Cloud Storage 存储桶的名称。
运行评估
如需运行评估作业,请按以下步骤操作:
在控制台中,前往 Modernization Hub 页面。
在着陆页上,找到 .NET 现代化改造卡片,然后点击开始评估。
在作业名称字段中,为评估作业输入一个唯一的名称。
在源代码位置字段中,选择一个包含源代码(ZIP 文件)的 Cloud Storage 存储桶。
在报告位置字段中,选择一个 Cloud Storage 存储桶来保存生成的评估报告。
从现代化改造方案列表中,选择一个现代化改造方案。
从位置列表中,为评估作业选择一个区域。
在服务账号字段中,选择一个具有所需角色部分中列出的所需 IAM 角色的专用服务账号。Cloud Build 会在此服务账号下运行评估作业,该服务账号需要 Agent Platform User 和 Cloud Storage 权限。
点击生成报告。
控制台会启动一个后台评估容器来分析您的项目。作业状态会显示在评估历史记录表中。
监控作业状态并查看报告
评估作业通常会在几分钟内完成,具体取决于代码库的大小。后台容器在完成处理后会自动终止。
如需查看评估结果,请按以下步骤操作:
- 在 Modernization Hub 页面上的评估历史记录表中,找到您的评估作业。
- 当状态列更改为已完成时,点击下载报告。
- 选择首选输出格式:
- HTML 报告:一个交互式摘要,可让您过滤不兼容的 Windows API、检查逐个文件的屏蔽工具列表,以及查看修复建议。
- Markdown 报告:格式化的摘要,适合与利益相关方和架构审核委员会分享。
查看评估报告
评估报告会将应用的迁移就绪情况分为以下几个方面:
- 总体兼容性得分:无需修改即可迁移到跨平台 .NET 的源代码行和依赖项的百分比。
- 阻塞因素细分:需要重构的特定 Windows 依赖项,例如:
- Windows Communication Foundation (WCF) 服务器实现。
- ASP.NET Web Forms 或 ASP.NET MVC 旧版流水线。
- Windows 注册表调用 (
Microsoft.Win32)。
- NuGet 依赖项分析:现有 NuGet 软件包的详细清单,指明每个软件包是否支持目标 .NET 版本或是否需要替换。
- 推荐措施:建议的代码转换和迁移路径,以便为应用在 Google Cloud上进行容器化做好准备。
使用 Antigravity 重构 .NET 代码
生成评估报告后,您可以将 Antigravity 与专用的 .NET 智能体技能结合使用,自动将代码从 .NET Framework 转换为跨平台 .NET。
在运行智能体重构工作流之前,请确保您满足以下前提条件:
- Antigravity 环境:安装 Antigravity IDE 或 Antigravity CLI (
agy),并配置 Google Cloud 项目的身份验证。 - 评估工件:下载
codmod评估报告并将其放入本地代码库工作区,以便智能体可以参考已识别的阻碍因素和依赖项升级路径。 - .NET 现代化改造技能:将
codmod.NET 现代化改造技能 (SKILL.md) 加载到 Antigravity 工作区设置中。如需申请预览最新 .NET 现代化改造智能体技能,请联系 modernization-hub-feedback-external@google.com。
后续步骤
- 了解如何使用
codmodCLI 创建应用现代化改造评估。 - 了解如何评估 Java 应用。
- 了解如何设置 Mainframe Assessment Tool (MAT)。
- 探索如何使用 Gemini Cloud Assist 进行 AI 辅助的代码转换。