mysql - NuGet 依赖项和多个 DLL 版本

标签 mysql asp.net-mvc umbraco nuget

我目前正在使用 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 核心依赖于该特定版本
  • 我无法降级数据组件包,因为 MySQL.Data.Entities 组件的 6.6.5 版本存在错误。

我尝试做的是一些 bindingRedirects 到 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,因此它的 list 定义与程序集不匹配。它位于 bin 文件夹中,因为我仍然希望该包作为 NuGet 包。

我唯一能想到的就是完全删除Umbraco-package并手动解决它。这样 bin 中就不会有 DLL,并且 AssemblyBinder 将不得不在正确的文件夹中查找。我不想这样做,因为我需要在我们的 CI 服务器和其他开发人员 PC 上正确设置包。此外,该软件包还有许多我希望自动解决的其他依赖项。

有人知道其他解决方案吗?

最佳答案

我无法对此进行测试,但遇到过类似的问题。在那些情况下,我写了这样的东西

<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.6.5.0" href="bin\Assembly\6.6.5\MySql.Data.dll"/>
   <codeBase version="6.7.4.0" href="bin\MySql.Data.dll"/>
</dependentAssembly>

与您的文件最大的不同是我在 bin 文件夹中有默认的 mysql,因为它是通过反射获取的。

关于mysql - NuGet 依赖项和多个 DLL 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18015179/

相关文章:

.net - Umbraco 虚拟节点

javascript - 阻止 Umbraco/TinyMce 将绝对 URL 转换为相对 URL

mysql - 在mysql中创建事件

c# - 当方法具有 [AllowAnonymous] 时调用自定义 AuthenticationHandler

asp.net - 在 ASP.NET MVC 中强制区分大小写的路由

asp.net-mvc - MVC 3 JSON 字符串未序列化为 Controller 操作

javascript - 为什么资源没有出现在生产服务器中?

mysql - 如何使用SQL查找unfollow页面?

php - 更改来自数据库的日期格式?

php - SQL 多重连接结果为空