2014-11-21 62 views
0

说我有在C#和外部项目二级库,我要使用这些库中:两个库引用相同的DLL

LibA.dll 
LibB.dll which also references LibA.dll because it uses some of its classes. 
Project C which references both LibA.dll and LibB.dll 

比方说里面LibB.dll我有一个返回一个类的方法从LibA.dll键入并在我的项目中,我希望在调用该方法时立即设置适当的类类型。例如:

LibA.classInsideLibA myObj = LibB.getClassInsideLibAInstance(); 

这应该工作,但是我想知道如果引用LibA.dllLibB.dll当我的项目的内部时LibB.dll已经引用LibA.dll会有存在的任何问题。引用LibB.dll在这种情况下是否自动引用LibA.dll

+0

你在Visual Studio中试过吗?我想你会发现这没有问题,但是你应该在IDE中真正放弃它。 – PhillipH 2014-11-21 17:01:10

回答

1

“是否引用LibB.dll在这种情况下自动引用LibA.dll”

我认为我们是在VS的项目讨论refernces。当然所有的dll都必须在运行时可用

这取决于。如果你有projX-> DLLA-> DLLB

如果DLLA使用DLLB但犯规暴露任何DLLB类型(即在其中的一个方法返回一个DLLB类),那么ProjA犯规需要了解DLLB

如果DLLA确实返回DLLB类projA需要DLLA和DLLB的引用

1

您已经一直这样做。以string班为例,假装这是你的LibA。我相信你有一个库,返回一个string。您也可能从您的库参考mscorlib(其中String居住在您的主项目中)返回了一个字符串。

这也不例外。

System.String myString = LibB.GetSomeString(); 
+0

如果有一个非.net程序集,它将不会被复制到发布的项目,而我认为部署。 – 2014-11-21 17:11:29

+0

我假设你的意思是“非标准.net程序集”。你不*包含'mscorlib'的引用,所以情况保持不变。另外,OP说项目C引用了LibA和LibB,在这种情况下,两者都应该被复制到输出目录。 – MikeH 2014-11-21 17:15:40

+0

我回顾一下......你可能无法删除对核心库的引用。 – MikeH 2014-11-21 17:18:23

相关问题