.NET项目加载AutoMapper程序集失败问题求助
解决AutoMapper程序集加载失败问题
你在.NET Core 2.0类库(含DB上下文)和.NET Framework 4.6.1 Azure函数项目中,调用db.ExecuteProcedureQuery<ApiAttendanceModel>(...)时触发的AutoMapper加载错误,本质是跨框架项目的依赖版本或部署问题,我整理了几个针对性的解决方法:
1. 统一两个项目的AutoMapper版本
首先看你错误里提到的是AutoMapper 6.1.1.0,必须让Azure函数项目和类库项目引用完全相同版本的AutoMapper NuGet包。不要只在类库中引用,函数项目要直接安装对应版本,避免间接引用导致的版本不匹配:
Install-Package AutoMapper -Version 6.1.1
2. 确保程序集被复制到函数输出目录
Azure函数运行时需要依赖程序集存在于bin目录中,所以:
- 右键Azure函数项目中引用的AutoMapper包(或类库项目),打开属性面板
- 将复制本地设置为
True,这样编译时程序集会被自动复制到输出目录 - 同时检查类库项目中AutoMapper的复制本地属性,确保它能被输出到类库的bin目录,进而被函数项目复制
3. 处理跨框架兼容性问题
AutoMapper 6.x是支持.NET Framework 4.6.1和.NET Core 2.0的,但要注意:
- 不要在类库中安装仅针对.NET Core的扩展包(比如
AutoMapper.Extensions.Microsoft.DependencyInjection),如果已经装了,在函数项目中也要同步安装对应版本的扩展,或者直接改用基础的AutoMapper包,减少框架兼容问题
4. 添加绑定重定向(针对.NET Framework项目)
打开Azure函数项目的app.config(如果没有就新建一个),添加AutoMapper的绑定重定向,强制所有引用指向正确版本:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="AutoMapper" publicKeyToken="be96cd2c38ef1005" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.1.1.0" newVersion="6.1.1.0" /> </dependentAssembly> </assemblyBinding> </runtime>
这能解决项目中潜在的多版本AutoMapper引用冲突。
5. 清理重建解决方案
旧的编译缓存可能导致依赖异常,按以下步骤操作:
- 右键解决方案 → 选择「清理解决方案」
- 手动删除两个项目的
bin和obj目录 - 重新生成整个解决方案,确保所有依赖都被正确部署
如果还是不行,去Azure函数项目的输出目录(通常是bin\Debug\net461)检查AutoMapper.dll是否存在,且版本为6.1.1.0。也可以尝试升级AutoMapper到6.x的最新版本(比如6.2.2),它的跨框架兼容性会更好,但记得两个项目要同步升级。
内容的提问来源于stack exchange,提问作者LittleFunny
相关产品推荐
相关产品推荐

