项目结构如下图:
Service工程调用两个Datamodel.sql中的方法,两个 Datamodel.sql中的方法分别使用了3.1.0.0版本的xxx.dll,Service工程中总是调用某一Datamodel.sql中的方法正常,别一个报错:未能加载xxx.dll...按常理两个dll的版本号相同不应该存在版本的问题,但实际的问题却就是版本号冲突。
根据http://www.cnblogs.com/OpenCoder/archive/2010/07/29/1788297.html#2131119中的说法,service工程引用两个工程后,它们bin目录下的dll只要在Datamodel.sql中使用过便会拷贝到Service的bin目录下,不会存在service的bin目录不存在xxx.dll的情况。
无奈之下,我查看了各Datamodel.sql的bin目录下的xxx.dll文件的属性,发现这两个同一版本的dll的文件大小竟然不一样,所以可能虽然两个dll版本号相同,其实是不同的版本。我将两个工程调用同一个xxx.dll,问题解决了。
总结: 建议同一解决方案,或者同一项目[指一个软件项目,不是VisualStudio中所指的项目]使用的公共程序集最好放在一个文件夹,所有的引用都引用都用这个文件夹下的dll,这样就不会出现这种版本号冲突的问题了。