将mysql.data.dll 从版本6.9.4.0换成6.5.4.0是遇到以下异常:
Could not load file or assembly 'MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
原因:
编译目录(debug或release)下的dll版本和.csproj中定义的版本不一致。
解决办法: 将debug或release下的dll版本换成与.csproj中定义的版本一致。
找到版本不一致的原因:比如多个.csproj引用了的相同的dll但是版本不一致。最后发现我有三个proj引用了MySql.Data但是版本不同,所以每次编译后就会有个csproj中的dll版本与实际copy的版本不一样。
更好的解决办法:
用GAC管理dll.
http://www.cnblogs.com/chenlulouis/archive/2010/06/30/1768176.html
http://stackoverflow.com/questions/215026/the-located-assemblys-manifest-definition-does-not-match-the-assembly-reference
https://msdn.microsoft.com/en-us/library/ex0ss12c%28VS.80%29.aspx (GAC命令的用法)
我的电脑在目录C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools 下可以找到GACUtil.exe