azure 未能加载文件或程序集“System.Runtime.InteropServices.RuntimeInformation

xzv2uavs  于 2022-12-30  发布在  其他
关注(0)|答案(5)|浏览(455)

每当我尝试使用应用程序洞察力和实体框架运行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>

任何帮助都将不胜感激
多谢了

mbskvtky

mbskvtky1#

确认dwilliss上面的评论对我来说也是有效的,解决办法是去掉:

<dependentAssembly>
  <assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>

(In我的案例来自app.config,for a Windows Service。)我的项目仅间接依赖于System.Runtime.InteropServices.RuntimeInformation。它是我导入的NuGet包的依赖项。

g9icjywg

g9icjywg2#

您的配置文件中是否缺少已加载的程序集?请确保您的web.config中有类似以下内容的内容。NuGet通常会执行此操作,但可能没有,并且不知道要加载什么

<dependentAssembly>
  <assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
dxxyhpgq

dxxyhpgq3#

如果您已经将项目的.NET运行时版本从4.7.1之前的版本更新为4.7.1或更高版本,则卸载Nuget包,删除/注解掉App.config部分(如果它仍然存在),并从框架重新添加引用。它位于4.7.1以上版本的框架中,在此之前,您必须添加Nuget包。
[编辑]...根据迈克尔在上面的评论,我在活的记忆之前投了赞成票。

b1zrtrql

b1zrtrql4#

当您从某个不同的平台添加项目引用并尝试生成它时,有时也会发生此类错误。移除引用应该会起作用。

oprakyz7

oprakyz75#

yeah!
多亏了https://stackoverflow.com/a/52785620/8081796
解决办法很简单:
编辑app.config文件,并在名称属性为"System.Runtime.InteropServices.RuntimeInformation"的节点"dependentAssembly"上删除publicKeyToken属性。
祝你好运

相关问题