我的项目中有大量程序集。
- Contract.Common;包含所有常用的
DataContract。 - Contract.Sync;更多功能
- 契约(Contract)任务;更多功能
- 另外六个组件随着产品的发展而具有更多功能。
通常,因为 Contract.Common 被其他 WCF 契约(Contract)程序集引用。遵循一些最佳实践阅读更多 WCF Architecture & Evoltion / Version ,有一个静态常量类,例如我用于所有合约的 NamespacePrefix。
这是我第一次开发一个独立于通用合约的新合约。我们称它为 Contract.NewStuff
按照规范,新合约在我的公共(public)合约库中重用 namespace 前缀常量(这意味着它需要引用它)。
对于我的网络服务客户端,我引用我的契约(Contract)程序集并使用它来连接到各种网络服务并调用它们。
问题
由于 Contract.NewStuff 仅在编译时使用常量的公共(public)库(没有运行时程序集),我如何阻止我的客户也不得不引用我的 Contract。常见的程序集?
我知道我的 Common contracts 只是一个 20KB 的程序集,我不应该为此担心。但是有 300,000 多台机器使用 Contract.NewStuff,我不明白为什么我应该浪费资源发送那个程序集,在未来的版本中更新它等等......
更新 1
使用 Add file as link选项。没有引用,只有一个地方可以编辑常量。
请您参考如下方法:
您可以将具有常量的类移动到新程序集,以便 Contract.Common 和 Contract.NewStuff 将引用它。我想你甚至可以在编译后“丢弃带有常量的程序集”,因为常量在 C# 编译时嵌入到 IL 代码中,并且不会在运行时每次需要它们时从常量程序集中读取。
另一个选择是将常量类“链接”到您的 Contract.NewStuff 程序集。在这种情况下,您将在两个项目中没有文件常量类重复。 Add File As Link
