本地调试遇FileNotFoundException:无法加载Microsoft.Rest.ClientRuntime.resources
我之前也碰到过类似的资源程序集加载失败问题,结合你的情况来看,主要是版本不匹配和资源包缺失导致的,给你几个针对性的解决步骤:
手动安装对应版本的资源NuGet包
你当前安装的Microsoft.Rest.ClientRuntime版本是2.3.18,但错误提示找的是2.0.0.0的资源程序集,大概率是对应文化的资源包没被安装。打开Package Manager Console执行以下命令,安装同版本的en-US资源包:Install-Package Microsoft.Rest.ClientRuntime.resources -Version 2.3.18 -Culture en-US添加程序集绑定重定向
从你的引用信息来看,项目里引用的Microsoft.Rest.ClientRuntime版本是2.0.0.0,但实际安装的是2.3.18,版本不匹配会导致资源加载时找不到对应版本的文件。在项目的app.config或web.config里添加以下配置:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <!-- 主程序集的绑定重定向 --> <dependentAssembly> <assemblyIdentity name="Microsoft.Rest.ClientRuntime" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.3.18" newVersion="2.3.18" /> </dependentAssembly> <!-- 资源程序集的绑定重定向 --> <dependentAssembly> <assemblyIdentity name="Microsoft.Rest.ClientRuntime.resources" publicKeyToken="31bf3856ad364e35" culture="en-US" /> <bindingRedirect oldVersion="0.0.0.0-2.3.18" newVersion="2.3.18" /> </dependentAssembly> </assemblyBinding> </runtime>这段配置会让.NET运行时用你安装的2.3.18版本代替引用的旧版本。
检查输出目录的资源文件
编译后,在项目的输出目录(比如bin\Debug\en-US)下,确认是否存在Microsoft.Rest.ClientRuntime.resources.dll。如果没有,找到NuGet包安装路径下的资源文件(一般在packages\Microsoft.Rest.ClientRuntime.resources.2.3.18\content\net452\en-US),手动复制到输出目录对应的文化文件夹中,同时确保项目引用里的Private属性设置为True(你的引用已经设置了,这一步可以跳过确认)。清理重建项目
有时候项目缓存的旧文件会干扰加载,按以下步骤操作:- 右键解决方案,选择清理解决方案
- 删除项目根目录下的
bin和obj文件夹 - 重新生成解决方案
内容的提问来源于stack exchange,提问作者RoG

