代码之家  ›  专栏  ›  技术社区  ›  Christian

MS生成错误3181-引用的程序集有问题

  •  0
  • Christian  · 技术社区  · 14 年前

    想象一下下面的场景:

    • 程序集“foo.dll”引用ADOX库(用于DDL和安全性的Microsoft ADO Ext.2.8),该库由VS 2010添加为bin目录中的interop.adox.dll。此引用的“本地副本”也设置为true。

    • 程序集“bar.exe”同时引用foo.dll和ADOX库,因为bar.exe中需要它的某些功能

    • 两个程序集都已签名

    当bar.exe中ADOX引用的“本地副本”也设置为true时,MS Build会生成警告3181-“两个或多个文件具有相同的目标路径”,这是有意义的。

    但是,当我将bar.exe中的ADOX引用的“本地副本”设置为false时,它编译良好,但在应用程序启动时,会引发一个错误,说明找不到程序集interop.adox,并且程序集的清单定义与程序集引用不匹配。

    我想我这里遗漏了一些相当简单的东西,但是我无法用谷歌解决我的问题。我很感激你能找到正确的解决方法或提示:)

    干杯

    基督教的

    1 回复  |  直到 14 年前
        1
  •  0
  •   Hans Passant    14 年前

    不知道为什么exe项目没有创建interop库。但把这个问题抛在一边。不要让exe项目再次引用ado,而是让它引用由dll项目创建的互操作库。

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