想象以下场景:
程序集“Foo.dll”引用了ADOX-Library(用于DDL和安全性的Microsoft ADO Ext.2.8),它被VS 2010添加为bin目录中的Interop.ADOX.dll。“本地副本”该引用也被设置为true。
程序集“Bar.exe”同时引用了Foo.dll和ADOX-Library,因为Bar.exe中需要它的一些功能
两个程序集都已签名
当Bar.exe中ADOX参考的“本地拷贝”也设置为true时,MS Build会生成警告3181 - “两个或多个文件具有相同的目标路径” - 这是有道理的。
但是,当我将Bar.exe中的ADOX-reference的“本地副本”设置为false时,它编译得很好,但是在启动应用程序时,会出现错误,说无法找到程序集Interop.ADOX,程序集的清单定义与程序集引用不匹配。
我想我在这里错过了一些相当简单的东西,但我无法解决谷歌的问题。我会感谢正确方向的解决方案或提示:)
干杯
基督教
答案 0 :(得分:0)
不确定为什么EXE项目没有创建互操作库。但是解决了这个问题。不要再让EXE项目引用ADO,而是让它引用DLL项目创建的互操作库。
不在公共类中公开ADO类型将是更好的解决方案。 ADO Ext是一个实用工具包,你应该能够很好地封装它。