gpt4 book ai didi

c# - EF Core 2.1.4 FileLoadException System.ComponentModel.Annotations 4.2.0.0

转载 作者:行者123 更新时间:2023-11-30 18:13:22 25 4
gpt4 key购买 nike

将我们的数据访问层从 EF6 升级到 EF Core 2.1(.4) 后,我们遇到了 FileLoadException 问题,System.ComponentModel.Annotations, Version=4.2.0.0,这很奇怪,因为 EF Core 2.1.4 使用 4.5.0.0,并且我们的解决方案中没有其他(我们可以找到)使用 4.2.0.0

例如,我们的解决方案中有以下项目结构:

数据访问:(所有项目使用 Microsoft.EntityFrameworkCore.SqlServer 版本 2.1.4)
- 模型(仅限使用 Scaffold-DbContext 创建的模型)
- 核心(抽象提供者、持久化者等)
- 通用(DTO、具体提供者、持久性等)

主要解决方案:(没有项目安装 EF Core 包)
- 一些项目 (A) 包含对模型、核心、通用的项目引用

例如,即使项目 A 是一个简单的控制台应用程序,它只是从数据库加载某些内容并将其显示到控制台,当在 DataAccess.Core 中的抽象提供程序级别评估某些内容时,我们会得到以下异常:

System.IO.FileLoadException occurred HResult=0x80131040 Message=Could not load file or assembly 'System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

奇怪的是,我们在任何地方都找不到System.ComponentModel.Annotations, Version=4.2.0.0,甚至在Nuget中也跳过了version。
在这个问题中尝试接受的答案:Could not load file or assembly 'System.ComponentModel.Annotations, Version=4.1.0.0 ,通过将以下内容添加到我的 .csproj 文件似乎解决了某些项目的问题,但不是全部:

<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

在构建后生成的 DataAccess.Models.dll.config 文件中,对 System.ComponentModel.Annotations 的唯一引用如下:

<dependentAssembly>
<assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
</dependentAssembly>

这不是 4.2.0.0,但我们不确定新版本号的确定位置。这可能是我们遗漏或配置不正确的一些小问题,但我们将不胜感激在查找问题方面提供的帮助或在何处查找的指示。我们不必将 AutoGenerateBindingRedirects 添加到每个 .csproj 文件的解决方案将是理想的

最佳答案

来自@JRB 评论的内容,格式为可读性的答案:

这是一个微软似乎很难修复的现有问题,可能是因为它涉及多个开发组之间的合作。它只出现在一些更复杂的解决方案中。解决方案非常简单。更改 bindingRedirect来自

<bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />

<bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.0.0.0" />

而且您的问题消失的可能性很小。此绑定(bind)重定向可以自动应用于多个项目。测试导致您的问题的原因。

关于c# - EF Core 2.1.4 FileLoadException System.ComponentModel.Annotations 4.2.0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52716844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com