MS Build Error 3181-引用程序集的问题

时间:2010-09-27 11:35:10

标签: c# .net visual-studio-2010 msbuild assemblies

想象以下场景:

  • 程序集“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,程序集的清单定义与程序集引用不匹配。

我想我在这里错过了一些相当简单的东西,但我无法解决谷歌的问题。我会感谢正确方向的解决方案或提示:)

干杯

基督教

1 个答案:

答案 0 :(得分:0)

不确定为什么EXE项目没有创建互操作库。但是解决了这个问题。不要再让EXE项目引用ADO,而是让它引用DLL项目创建的互操作库。

不在公共类中公开ADO类型将是更好的解决方案。 ADO Ext是一个实用工具包,你应该能够很好地封装它。