You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

发布C# AWS Lambda函数报Type or namespace does not exist错误如何解决

问题原因和解决步骤

1. 修复本地项目依赖(必做,解决编译报错)

当前报错属于本地编译阶段找不到对应程序集,和Lambda Layer无关:dotnet lambda deploy-function执行时会先在本地做编译发布操作,此时你的项目csproj文件中没有引用对应NuGet包,直接触发编译失败,Lambda Layer只负责给AWS云端运行环境提供依赖,不参与本地编译流程。

你需要先在本地项目中安装所有用到的NuGet包,执行以下命令:

  • 安装DocX包(对应Xceed命名空间):dotnet add package DocX --version 1.8.0
  • 安装Newtonsoft.Json包:dotnet add package Newtonsoft.Json --version 13.0.1
  • 安装Microsoft.Identity.Client包:dotnet add package Microsoft.Identity.Client --version 4.35.1
  • 安装Microsoft.Graph包:dotnet add package Microsoft.Graph --version 4.6.0

注意:安装版本要和你Layer里打包的版本完全一致,避免后续运行时出现版本冲突。

安装完成后先本地执行dotnet build确认没有编译错误,再进行后续部署操作。

2. 优化部署配置(可选,减少部署包体积)

如果你希望用Lambda Layer避免重复打包依赖,需要在csproj文件中添加配置,让发布阶段排除已经存放在Layer里的包:
在你的DemoTests.csproj的<PropertyGroup>节点下添加以下配置:

<CopyLocalLockFileAssemblies>false</CopyLocalLockFileAssemblies>

该配置会让发布操作不把NuGet包打到部署包中,运行时直接从Layer加载依赖,大幅缩小部署包体积。

3. 检查Lambda Layer的路径合法性

确认你打包Layer时,.NET依赖都放在Layer的dotnet/shared/Microsoft.NETCore.App/或者dotnet/lambda/目录下,这是.NET Lambda运行时默认查找依赖的路径,如果路径配置错误,即使本地编译通过,云端运行时也会找不到依赖。

4. 重新执行部署命令

本地编译验证通过后,再执行原来的部署命令即可:
dotnet lambda deploy-function DemoFunction --function-layers arn:aws:lambda:us-east-2:687758306845:layer:DemoLayer:1

内容的提问来源于stack exchange,提问作者West

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:54:04