net472引用netstandard2.0项目时Microsoft.Graph加载失败求助
针对.NET Framework 4.7.2 WebForms应用引用NET Standard 2.0类库加载Microsoft.Graph失败的解决方案
一、解决Microsoft.Graph程序集找不到的问题
- 检查主应用输出目录:查看ASP.NET WebForms项目的
bin\目录,确认是否存在Microsoft.Graph.dll(版本5.50.0.0)及相关依赖(如Microsoft.Graph.Core.dll)。若缺失,可从类库的输出目录手动复制,或者在WebForms项目中右键引用的类库,将复制本地属性设为True。 - 同步NuGet依赖:直接在WebForms项目中安装
Microsoft.Graph 5.50.0NuGet包,确保所有依赖项自动同步到主应用的输出目录。 - 添加程序集绑定重定向:在
web.config的<runtime>节点下添加Microsoft.Graph的绑定规则,确保加载正确版本:<dependentAssembly> <assemblyIdentity name="Microsoft.Graph" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.50.0.0" newVersion="5.50.0.0" /> </dependentAssembly>
二、修复System.Diagnostics.DiagnosticSource版本不匹配问题
出现FileLoadException且提示清单定义不匹配时,按以下步骤处理:
- 确认冲突版本:从错误日志中提取期望版本与实际加载的版本号(例如期望6.0.0.0,实际加载5.0.0.0)。
- 添加精准绑定重定向:在
web.config的<runtime>节点中添加DiagnosticSource的绑定规则,指定类库使用的正确版本:
可通过类库的<dependentAssembly> <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-[冲突的最高版本号]" newVersion="[类库依赖的版本号]" /> </dependentAssembly>obj\project.assets.json文件找到DiagnosticSource的精确版本。 - 禁用自动绑定重定向:若自动生成的重定向导致混乱,在WebForms项目的
.csproj文件中添加以下配置,手动维护所有绑定规则:<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>false</GenerateBindingRedirectsOutputType>
三、额外排查步骤
- 清理并重新生成:删除所有项目的
bin、obj目录,重新编译整个解决方案,避免旧版本程序残留干扰。 - 检查GAC冲突:使用
gacutil /l Microsoft.Graph和gacutil /l System.Diagnostics.DiagnosticSource命令查看全局程序集缓存中是否存在旧版本,若有则移除对应版本。 - 统一依赖版本:确保主应用与类库的所有NuGet依赖版本一致,尤其是Microsoft.Graph关联的System系列包。
内容的提问来源于stack exchange,提问作者Jason Ayer
相关产品推荐
相关产品推荐

