我尝试在 VS 中引用一个 dll 库,但它一直给出以下消息: (尝试加载的程序集是旧版本,我根本不引用它。但它仍然保存在某个地方,它阻止我引用较新的 dll 版本)
Could not load file or assembly '......, Version=......, Culture=neutral, PublicKeyToken=...........' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
它从哪里获取版本号、 key token ...等以便我可以更改或删除它?
最佳答案
编译器从引用程序集中获取 [AssemblyVersion],该程序集位于项目的引用节点中。显然,在运行时它会找到该 DLL 的另一个版本。
像这样射击你的脚的方法并不多,在你的开发机器上,你可以通过将引用的复制本地属性设置为 True 来确保获得相同的版本。请注意 .config 文件,它故意告诉 CLR 去其他地方查找。如果这种情况发生在测试机器上,那么您部署项目的方式就有问题。如果您不知道 DLL 可能来自何处,请使用 Fuslogvw.exe 并记录所有绑定(bind)以跟踪 CLR 如何定位 DLL。
关于c# - VS从哪里获取旧的程序集引用元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12516473/