C# MS生成错误3181-引用的程序集出现问题
想象一下以下场景:C# MS生成错误3181-引用的程序集出现问题,c#,.net,visual-studio-2010,msbuild,assemblies,C#,.net,Visual Studio 2010,Msbuild,Assemblies,想象一下以下场景: 程序集“Foo.dll”引用ADOX库(用于DDL和安全性的Microsoft ADO Ext.2.8),该库在VS 2010之前作为Interop.ADOX.dll添加到bin目录中。此引用的“本地副本”也设置为true 程序集“Bar.exe”既引用Foo.dll,又引用ADOX库,因为Bar.exe中需要它的某些功能 两个程序集都已签名 当Bar.exe中ADOX引用的“本地副本”也设置为true时,MS Build会生成警告3181-“两个或多个文件具有相同的目标
- 程序集“Foo.dll”引用ADOX库(用于DDL和安全性的Microsoft ADO Ext.2.8),该库在VS 2010之前作为Interop.ADOX.dll添加到bin目录中。此引用的“本地副本”也设置为true
- 程序集“Bar.exe”既引用Foo.dll,又引用ADOX库,因为Bar.exe中需要它的某些功能
- 两个程序集都已签名
Christian不确定EXE项目为什么没有创建互操作库。但不要把这个问题推下去。与其让EXE项目再次引用ADO,不如让它引用由DLL项目创建的互操作库
不在公共类中公开ADO类型是更好的解决方案。ADO Ext是一个实用程序包,您应该能够很好地封装它。您确定在Foo.dll和Bar.exe(名称和版本)中引用了相同的程序集吗?Bar.exe引用的Foo.dll在哪里?在自定义目录及其依赖项中?此目录中Interop.ADOX.dll的版本是什么?我再次检查,是的,我引用的是同一版本的ADOX.dll(我的计算机上只有一个)。我直接从Foo项目的bin目录中获取Foo.dll的引用。在此目录中,Interop.ADOX.dll的版本为2.8,这对我来说很好,因为我也用版本2.8引用了ADOX.dll。感谢您的回复,我将尝试您的建议,引用Interop dll