C# 我应该担心版本冲突吗?

C# 我应该担心版本冲突吗?,c#,app-config,devart,dotconnect,C#,App Config,Devart,Dotconnect,我最近更新了我的devArt dotConnect for Oracle组件版本6。?至7.2 一切似乎都很顺利 然而,在编译时,我看到了警告:“在同一依赖程序集的不同版本之间发现冲突。” 我不知道这是否与dotConnect组件有关(它没有说),但我认为这是一个很好的猜测 当我2次单击警告时,会出现以下对话框: MS Visual Studio--一个或多个依赖程序集的版本为 冲突 是否要通过添加绑定重定向记录来修复这些冲突 在app.config文件中 他们(MS)或it(VS)提供的服务真

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

一切似乎都很顺利

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

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

当我2次单击警告时,会出现以下对话框:

MS Visual Studio--一个或多个依赖程序集的版本为 冲突

是否要通过添加绑定重定向记录来修复这些冲突 在app.config文件中

他们(MS)或it(VS)提供的服务真是太好了,但是……它能做什么呢?它并没有确切地告诉我。我应该留下还是离开

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

德瓦特数据 -及 Devart.Data.Oracle

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

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

所以有一个版本不匹配,但没有运行时版本。我不知道这是否是问题所在。如果警告信息更明确一些就好了。据推测,“it”确切地知道问题是什么——为什么它不会分割这些重要信息

更新2
我有另一个项目,使用完全相同的两个参考。在安装更新的组件后,它甚至不会编译。为什么这两个项目之间会有这样的差异?因此,即使.dll是相同的(相同的名称,磁盘上相同的位置),我还是删除了它们,然后将它们添加回第二个项目中,并且运行良好-没有错误,没有警告。但是,我回到了第一个项目,仍然得到同样的警告,我删除并添加了这两个引用/DLL——我仍然得到同样的警告。因此,我仍然不知道该怎么做/我是否应该接受VS的提议/重新定向的建议(我在脑海中想象着“老派”电话接线员从各个方向重新连接电线,做着值得青少年使用的旋转动作)。

绑定记录会将绑定部分添加到你的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复制到解决方案的文件夹中,并使您的所有项目指向该文件夹是的,您应该担心。您有两个程序集(例如MyAssembly1和MyAssembly2)引用相同的程序集(例如MySharedAssembly),但版本不同。应用程序只能加载和使用一个版本的MySharedAssembly,因此MyAssembly1和MyAssembly2需要正确使用它

您必须引用MySharedAssembly的旧版本。因此,一个问题是MySharedAssembly是否向后兼容?否则,您的应用程序可能无法正常工作

如果将重定向添加到配置中,基本上就是说任何试图加载MySharedAssembly旧版本的程序集都应该使用新版本。因此,如果MySharedAssembly是向后兼容的,那么您肯定可以避免这种情况。但这需要应用程序有一个配置文件


最好的办法是找到引用共享程序集的程序集,并查看是否有使用最新和最好版本的程序集更新。

Nice title。如果你没有明显的颤抖,那么你就没有认真对待这件事。拿些武器。这让我害怕,甚至不是我警告谁说,“如果你不担心,你不了解情况”或…“你没有注意”?有没有办法找出哪个程序集被多个其他程序集引用?在这个解决方案中,我只有一个项目,所以我不知道这是怎么发生的。@ClayShannon-如果你在Reflector中加载你的程序集,那么这将告诉你每个程序集引用了什么。请看,我不知道是哪个程序集导致了问题-err msg非常模糊。警告消息,即(不是err msg)似乎是log4net的主题;一旦我更新了一些文件,一切都很好,所以我猜一个引用了一个版本的log4net,另一个引用了另一个版本的log4net。