2

我的项目中有大量程序集。

  • 合同.Common ; 包含所有DataContract常用的s。
  • 合约同步;更多功能
  • 合同任务;更多功能
  • 随着产品的发展,另外六个具有更多功能的组件。

一般来说,由于Contract.Common被其他 WCF 合同程序集引用。遵循一些最佳实践,阅读更多WCF 架构和演进/版本,有一个静态常量类,例如我的 NamespacePrefix,我用于所有合同。

尽管我正在开发一个独立于通用合同的新合同,但这是第一次。我们称之为Contract.NewStuff

按照规范,新合约在我的通用合约库中重用命名空间前缀常量(这意味着它需要引用它)。

对于我的 web 服务客户端,我引用了我的合同程序集并使用它来连接到各种 web 服务并调用它们。

问题

由于Contract.NewStuff仅在编译时将公共库用于常量(没有运行时程序集),我如何阻止我的客户也必须引用我的Contract.Common程序集?

我知道我的 Common Contract 只是一个 20KB 的程序集,我不应该担心它。但是有 300,000 多台机器使用Contract.NewStuff,我不明白为什么我应该浪费资源发送该程序集,在未来的版本中更新它等等......


更新 1

使用添加文件作为链接选项。没有引用,单一的地方来编辑常量。

4

1 回答 1

0

您可以将具有常量的类移动到新程序集,以便 Contract.Common 和 Contract.NewStuff 将引用它。我想您甚至可以在编译后“扔掉带有常量的程序集”,因为常量在 C# 编译时嵌入在 IL 代码中,并且不会在运行时每次需要时从常量程序集中读取。
另一个选项是将常量类“链接”到您的 Contract.NewStuff 程序集。在这种情况下,您将在两个项目中没有文件常量类重复。将文件添加为链接

于 2012-08-30T10:56:08.703 回答