【问题标题】:.net Dynamic Reference but still have intellisense.net 动态参考,但仍有智能感知
【发布时间】:2013-09-30 15:14:56
【问题描述】:

我们的团队致力于处理依赖于不同程序集的模块。例如。我们有一个 EmailClient 模块,它使用一组用于一个特定构建的程序集和另一组完全不同的程序集用于另一个构建。这是因为我们根据客户集成到不同的后端。

我们希望为 EmailClient 保留一个源代码树,并确保“最新”版本始终适用于所有客户。我们在这里面临的挑战是不要将不必要的组件分发给一组客户。当他们变得挑剔并询问所有这些其他文件的用途时。

这会导致以下错误,并且很难在一个地方捕获:

System.IO.FileNotFoundException:无法加载文件或程序集。

.Net 是否提供这样一个功能,我们可以添加对各种程序集的引用,但不能分发其中的一些?

【问题讨论】:

  • 如果您不随应用程序分发程序集,则代码无法使用该程序集。如果代码没有使用它,为什么要引用它?
  • 这似乎是插件风格或提供者风格架构的候选者,您可以在其中实现 EmailClient 的标准接口,然后使用配置设置来提供具体的类来实现EmailClient 的详细信息。无论是 DI 文件、app.config 还是 MEF 都是实现细节。
  • 谢谢 Tetsujin,Jeroen 也提到了 MEF,会看这个。
  • @David,我们需要一个满足不同客户需求的资源。 CustomerA 可能有一个 Avaya 后端及其依赖 dll 集,CustomerB 可能有一个 Exchange 后端及其依赖 dll 集。我们不想为 CustomerB 包含 Avaya 相关的 dll。

标签: c# .net .net-assembly


【解决方案1】:

你应该看看像 Managed Extensibility Framework (MEF) 这样的插件架构 http://msdn.microsoft.com/en-us/library/dd460648.aspx

这样您就可以扩展您当前的应用程序,而无需创建对程序集的依赖项。

即使您不打算实施 MEF。它将提供想法和的思考方式,以及如何自己实施。

【讨论】:

  • 感谢 Jeroen,将检查 MEF。
猜你喜欢
  • 2011-11-30
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-31
相关资源
最近更新 更多