c# - 在同一解决方案中使用 EFCore 2 和 EFCore 3。项目没有使用正确的版本
问题描述
我的解决方案中有 3 个项目:
Data.Mysql、Data.Progress 和 MainProject
MainProject 使用 Data.MySQl 和 Data.Progress。
Data.MySQL 使用 Pomero-Provider 和 EFCore 3.11
Data.Progress 使用 OpenEdge-Provider 和 EFCore 2.1.11
问题是 Data.Progress 尝试使用 EFCore 3.11 DLL。
首先我注意到在输出文件夹中只创建了 3.11 DLL。
我的第一个更改是添加 DestinationSubDirectory 以分隔两个项目并将它们放入子文件夹中:
<ProjectReference Include="..\Data.MySQL\Data.MySql.csproj">
<Project>{050aeca0-c549-43b9-9fed-2cb3311a7239}</Project>
<Name>Data.MySQL</Name>
<DestinationSubDirectory>Data.MySQL\</DestinationSubDirectory>
</ProjectReference>
<ProjectReference Include="..\Data.Progress\Data.Progress.csproj">
<Project>{c8972134-c3bf-4fab-9a35-7d496f464a14}</Project>
<Name>Data.Progress</Name>
<DestinationSubDirectory>Data.Progress\</DestinationSubDirectory>
</ProjectReference>
以及将其添加到 App.config
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Data.MySql;Data.Progress" />
<dependentAssembly>
<assemblyIdentity name="Microsoft.EntityFrameworkCore" culture="neutral" publicKeyToken="c5687fc88969c44d"/>
<bindingRedirect oldVersion="0.0.0.0-2.1.14.99999" newVersion="2.1.11"/>
<bindingRedirect oldVersion="3.0.0.0-3.2.0.0" newVersion="3.1.9"/>
<codeBase version="2.1.11" href="Progress\Microsoft.EntityFrameworkCore.dll" />
<codeBase version="3.1.9" href="MySql\Microsoft.EntityFrameworkCore.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
一个问题是 Data.Progress 没有在 Data.Progress 文件夹中创建 EFCore DLL。所以我手动将正确的复制到文件夹中。
使用 Data.Progress 时,我尝试手动加载 DLL:
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "/Microsoft.EntityFrameworkCore.dll";
Assembly.LoadFile(path);
但 Data.Progress 仍在尝试使用 EFCore 3.1 DLL!我可以更改哪些内容以使用正确的 EFCore 版本?我认为它只是尝试使用最新的加载版本。我可以以某种方式强迫它吗?
最好的问候克里斯托弗
解决方案
推荐阅读
- elasticsearch - 如何从句子中过滤匹配的单词并保持它们的唯一性?
- python-2.7 - PYTHON2 - 有没有办法在 csv write 中声明编码方法
- java - 一旦父类具有泛型,泛型类型就会丢失
- vhdl - 简单的倒数计数器整数与无符号
- java - 我们如何通过java中的sftp将文本附加到远程服务器上的现有文件?
- javascript - 如何通过更改 URL 中的参数来更改 API 中的数据?javascript上的Restfull API?
- javascript - 如何使垂直导航栏的文本在打开时保持在同一位置?
- javascript - 搜索 Ant Design Tree 按标题选择
- android - 包 junit.framework 不存在 api 28
- android - 使用 Jdbc 将 Android Studio App 连接到 Mysql 时导致此错误的原因是什么