【问题标题】:VS2005 LibrariesVS2005 库
【发布时间】:2012-01-09 13:25:33
【问题描述】:

假设您有 3 个项目:

ProjectA - Class Library
ProjectB - Class Library
ProjectC - Console Application

现在假设ProjectB 使用ProjectA 的DLL,ProjectC 使用ProjectB 的DLL。

目前,我必须为ProjectC 添加对ProjectBProjectA 的引用。

有没有办法避免这种情况?

【问题讨论】:

  • 当 ProjectC 使用 ProjectA 中的类型时,您需要有该引用,否则您没有。

标签: c# .net dll visual-studio-2005 libraries


【解决方案1】:

如果项目 C 不直接使用项目 A 中的任何类,则项目 A 不需要引用项目 C。

您仍然需要在运行时可用的 Project A dll。

澄清“直接使用” - 项目 C 的代码中对类、接口、结构的任何引用 - 项目 A 中定义的任何内容以及对项目 B 中定义但继承自 a 的类或接口的引用项目 A 中定义的基类/接口。

这就是使用 DI(依赖注入)时的做法——您的项目 B 是应用程序 (C) 和服务实现 (A) 之间的合同。它包含接口和 POCO。

编译时应用只知道合约,运行时 DI 容器加载实现。更改实现不需要重新编译,可以通过交换 dll 来完成。

【讨论】:

  • 或多或少是我害怕的。我希望有一种方法可以将ProjectA 的库包含在ProjectB...
【解决方案2】:

没有其他办法。您必须在 B 中添加 A 的引用,在 C 中添加 B 的引用,否则 VS.NET 将如何知道要使用哪个类库? 但是,我认为您不需要在 C 中同时引用 A 和 B。如果构建不成功,请检查代码 - 您可能在 C 中的某处使用了 A 的类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多