【问题标题】:DLL looking for wrong versionDLL 寻找错误的版本
【发布时间】:2019-10-30 13:19:52
【问题描述】:

我在 Visual Studio 2015 中开发了一个使用 WinSCPnet.dll 的类库 (dll)。在排除它寻找错误 dll 的原因时,我为其添加了 Nuget,获得了最新版本。我们使用的版本其实是在那之前的几个,所以我卸载了最新的(使用Nuget),安装了我想要的版本。现在,当它运行时,它正在寻找最新版本。

System.IO.FileLoadException:无法加载文件或程序集 'WinSCPnet,版本=1.6.5.9925,文化=中性, PublicKeyToken=2271ec4a3c56d0bf' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)

我已尝试搜索注册表 gacutil /u(成功运行并删除了 dll,但我仍然收到此消息),清理项目并重建,删除 bin 和 obj 中的所有内容并重建 - 我错过了什么?

谢谢!

【问题讨论】:

  • 你有包含绑定重定向的配置文件吗?
  • @ColinM 不,我没有
  • 您是否检查了您的网络/应用程序配置? -> 部分的 版本可能不正确。
  • @ap.dev 不——它不是一个网络应用程序,它是我创建的一个类库 (dll)。更新了描述以澄清这一点。如果这个项目中有这样的东西,我一直没能找到。
  • @HansPassant fuslogvw 向我展示了数据库项目的 MSBuild 正在发生的一些事情,但它没有向我展示这个项目。有什么想法吗?

标签: c# dll


【解决方案1】:

试试这个:

卸载您的项目,右键单击,编辑 .csproj 文件.. 找到您的参考,它已经像这样<Reference Include="WinSCPnet, Version=1.6.5.9925 .../>",编辑创建打开关闭参考标记<Reference></Reference> 里面放<HintPath>path to your dll file here</HintPath>

希望这有帮助!?

【讨论】:

  • 我在 .csproj 文件中有以下内容。它已经显示了我希望它使用的正确版本。这就是你说的编辑吗? ..\packages\WinSCP.5.9.2\lib\WinSCPnet.dll HintPath> True
  • 是的,但是您的提示路径版本与参考中的版本不同,如您所见.. 转到您的软件包并查看您有多少版本...尝试更改路径
  • 我明白你的意思,但是 WinSCPnet.dll 的版本是 1.3.5.6958,但它的 exe 版本是 5.9.2。我不知道他们为什么要这样对我,但这很令人困惑。所以,它们实际上是相同的版本和我想要使用的版本。
  • 不只是你,几个月前在一个大项目上遇到了同样的问题......所以我们决定只通过 Nugget 下载引用,删除它们,然后我们自己添加引用以避免这种情况混乱。
  • 因此,例如,您通过 nuget 获得了 Winscp,并安装了它。然后,卸载了?那你做了什么? (也许这就是我需要做的。这听起来与我尝试过的相似,但可能不完全是你的做法。)
猜你喜欢
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多