每当我尝试使用应用程序洞察力和实体框架运行webjob项目时,我都会收到这个错误。
System.IO.FileLoadException: "未能加载文件或程序集" System. Runtime. InteropServices. RuntimeInformation,版本= 0.0.0.0,区域性= neutral,PublicKeyToken = b03f5f7f11d50a3a "或它的某个依赖项。找到的程序集的清单定义与程序集引用不匹配。(HRESULT异常:0x80131040)'
我已经安装了以下nuget包
微软。Azure。Web作业。日志记录。应用程序洞察版本2.1.0-beta4
Microsoft扩展日志记录版本2.0.0
Microsoft.扩展.日志记录.控制台版本2.0.0.
这都适用于新的Visual Studio 2017 webjob项目,当我尝试包含现有代码库时,主要是使用实体框架,我得到了这个错误。当我在一个工作中查看引用时,我没有System. Runtime. InteropServices. RuntimeInformation,但它已添加到具有实体框架的项目中。它似乎是. net标准的一部分,但为什么我不需要. net标准为我的新控制台应用程序!
I'm not sure why its looking for Version 0.0.0.0 either as the one I have is 4.0.2.0
我也尝试过将此添加到项目文件中,但没有成功。
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
任何帮助都将不胜感激
多谢了
5条答案
按热度按时间mbskvtky1#
确认dwilliss上面的评论对我来说也是有效的,解决办法是去掉:
(In我的案例来自app.config,for a Windows Service。)我的项目仅间接依赖于System.Runtime.InteropServices.RuntimeInformation。它是我导入的NuGet包的依赖项。
g9icjywg2#
您的配置文件中是否缺少已加载的程序集?请确保您的web.config中有类似以下内容的内容。NuGet通常会执行此操作,但可能没有,并且不知道要加载什么
dxxyhpgq3#
如果您已经将项目的.NET运行时版本从4.7.1之前的版本更新为4.7.1或更高版本,则卸载Nuget包,删除/注解掉App.config部分(如果它仍然存在),并从框架重新添加引用。它位于4.7.1以上版本的框架中,在此之前,您必须添加Nuget包。
[编辑]...根据迈克尔在上面的评论,我在活的记忆之前投了赞成票。
b1zrtrql4#
当您从某个不同的平台添加项目引用并尝试生成它时,有时也会发生此类错误。移除引用应该会起作用。
oprakyz75#
yeah!
多亏了https://stackoverflow.com/a/52785620/8081796
解决办法很简单:
编辑app.config文件,并在名称属性为"System.Runtime.InteropServices.RuntimeInformation"的节点"dependentAssembly"上删除publicKeyToken属性。
祝你好运