我目前正在使用 ASP.NET MVC 开发一个 Umbraco 网站。该网站还引用了另一个组件,该组件使用 EntityFramework 5 连接到与 CMS 不同的数据库。(两个数据库都是 MySQL)。
我正在使用 NuGet 来管理我的依赖项。这些是(除其他外)我拥有的当前软件包及其依赖项:
数据组件
-> MySQL.Data.Entities 6.7.4
-> MySql.Data 6.7.4 (dependency for at least 6.7.4)
网络
Umbraco core
-> MySql.Data 6.6.5 (exact version)
现在的问题是 web 组件有对数据组件的引用,因此对 MySQL.Data 的引用发生冲突:
- 我无法在 Web 组件中更新 MySql.Data,因为 Umbraco 核心依赖于该特定版本
- 我无法降级 datacomponent 包,因为 MySQL.Data.Entities 组件的 6.6.5 版本存在错误。
我试图做的是一些绑定重定向到 bin 外的文件夹:
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.6.5.0" newVersion="6.6.5.0" />
<codeBase version="6.7.4.0" href="Assembly/6.7.4/MySql.Data.dll"/>
<codeBase version="6.6.5.0" href="Assembly/6.6.5/MySql.Data.dll"/>
</dependentAssembly>
这里的问题是,AssemblyBinder 首先查看 bin 目录,并且有 6.6.5 版本的 DLL,因此它的清单定义与程序集不匹配。它在 bin 文件夹中,因为我仍然希望将包作为 NuGet 包。
我唯一能想到的就是完全删除 Umbraco-package 并手动解决它。这样,bin 中就不会有 DLL,而且 AssemblyBinder 必须在正确的文件夹中查找。我不想这样做,因为我需要在我们的 CI 服务器和其他开发人员 PC 上正确设置包。此外,该包还有许多其他我希望自动解决的依赖项。
有谁知道不同的解决方案?