C#解决在同一项目中使用不同版本动态库的问题

记录和分享一下在C#开发项目过程中遇到的同一项目中使用不同版本动态库的问题,接下来分享全过程。

报错

错误    CS1705    标识为“XXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”的程序集“XXX”所使用的“System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”版本高于所引用的标识为“System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的程序集“System.Windows.Interactivity”
 

原因

版本依赖引起,在同一项目中使用了某个动态库的不同版本,但未设置特定版本,则VS会默认引用同一位置的动态库。

具体到我自己遇到的情况是:在同一项目中,引用处引用了一个动态库A,在另外位置设置了文件输出同名动态库A(不同版本),重新添加引用不同位置的动态库A无效仍旧指向的是同一位置(必须同时设置【特定版本】为True才有效)。

解决方法

删除这个动态库的不同版本引用和输出,然后重新引用,引用时,在动态库属性中设置【特定版本】为True,如下图示例。需要输出的文件也重新包含在项目中并设置【复制到输出目录】选项。

大结局

保存以上操作,重新生成,大功告成!程序猿最喜欢看到的全部生成成功结果!