我正在使用C#编写支持库,并将其放置在本地NuGet存储库中,该存储库位于我的文件系统中。我注意到,每当我在其中一个库中添加NuGet依赖项,然后在我的某个项目中引用该库时,该项目会自动获得我库中所有NuGet依赖项的可见性。
这并不总是想要的,因为我的库中的名称可能与它们的依赖项中的名称冲突。有没有方法可以隐藏已引用库的依赖项?
举例:我正在开发一个名为foo()的函数,在我的库Lib中引用了一个NuGet依赖项Dep,该依赖项也包含一个foo()函数。现在,如果我将Lib引用到一个名为Proj的项目中,默认情况下会发生的是Proj会同时看到Lib和Dep,并且可以从其中任意一个使用foo()函数。首选的行为是Proj只能看到Lib.foo()
更新
也许这可以作为依赖问题的例子:我在一个项目中导入了iTextSharp和BouncyCastle,这些代码行会产生编译错误:
Org.BouncyCastle.X509.X509CertificateParser cp;
Org.BouncyCastle.X509.X509Certificate[] chain;
文章称,iTextSharp和BouncyCastle中都包含X509CertificateParser
和X509Certificate
的完全限定名称,这意味着iTextSharp引用了BouncyCastle,并且对于反过来引用iTextSharp的任何人都是可见的,即使它在Visual Studio的“引用”下拉菜单中未列出。
foo()
,因为它会带有实例或类型名称的前缀。你能给出一个完整、具体的例子,说明什么情况下会真正令人困惑吗? - Jon Skeet