5

我最近从版本 6 更新了我的 devArt dotConnect for Oracle 组件。?至 7.2

一切似乎都很好。

但是,在编译时,我看到了警告:“发现同一依赖程序集的不同版本之间存在冲突。

我不知道这是否与 dotConnect 组件有关(它没有说),但我认为这是一个很好的猜测。

当我 2-click 警告时,我得到对话框:

MS Visual Studio -- 一个或多个依赖程序集存在版本冲突。

您想通过在 app.config 文件中添加绑定重定向记录来解决这些冲突吗?

他们(MS)或它(VS)提供了多么好的,但是......它会做什么?它并没有确切地告诉我。我是该留下还是该离开?

更新

我参考了两个 DevArt dotConnect for Oracle 组件:

Devart.Data - 和 Devart.Data.Oracle

Devart.Data:运行时版本 v2.0.50727,版本 5.0.555.0

Devart.Data.Oracle:运行时版本 v2.0.50727,版本 7.2.96.0

所以有一个版本,但没有一个运行时版本,不匹配。我不知道这是否是问题所在。如果警告信息更明确,那就太好了。大概“它”确切地知道问题出在哪里——它为什么不泄露这些重要信息?

更新 2

我有另一个使用完全相同的两个引用的项目。安装更新的组件后甚至无法编译。为什么这两个项目有那么大的区别呢?因此,即使 .DLL 相同(名称相同,磁盘上的位置相同),我还是删除了它们,然后将它们添加回第二个项目,它运行良好 - 没有错误,没有警告。但是,我回到第一个项目,仍然收到相同的警告,我删除并添加了这两个引用/DLL——我仍然收到相同的警告。所以我仍然不知道该做什么/我是否应该接受 VS 的提议/重定向的建议(我在脑海中想象“老派”电话接线员以各种方式重新连接电线,做值得青少年 Twister 爱好者的旋转)。

4

2 回答 2

3

绑定记录会将绑定部分添加到您的 web.config(或 app.config)文件中,将给定版本的 dll 指向另一个版本。但是,如果它们彼此不兼容,这可能很危险。他们看着像是

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

但是,在去之前,我会检查不同项目从哪里链接您的 Devart dll,并确保它们都引用相同。在极端情况下,将您想要使用的 Devart dll 复制到解决方案的文件夹中,并使您的所有项目都指向那个

于 2012-10-05T21:22:50.380 回答
1

是的,你应该担心。您有两个程序集(例如 MyAssembly1 和 MyAssembly2)引用相同的程序集(例如 MySharedAssembly),但版本不同。只有一个版本的 MySharedAssembly 可以加载和使用您的应用程序,因此 MyAssembly1 和 MyAssembly2 需要正确使用它。

必须参考旧版本的 MySharedAssembly。所以一个问题是 MySharedAssembly 是否向后兼容?如果没有,那么您的应用程序可能无法正常工作。

如果将重定向添加到配置中,则基本上是说任何尝试加载旧版本的 MySharedAssembly 的程序集都应该使用新版本。因此,如果 MySharedAssembly 是向后兼容的,那么您当然可以侥幸逃脱。但这需要您的应用程序有一个配置文件。

您最好的选择是找到引用共享程序集的程序集,并查看它们是否有使用最新和最佳版本的更新。

于 2012-10-05T21:23:24.747 回答