代码之家  ›  专栏  ›  技术社区  ›  M Afifi

常量、WebServices、命名空间和共享程序集

  •  2
  • M Afifi  · 技术社区  · 13 年前

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

    • 合同.普通 ;包含所有 DataContract 常用的。
    • 合同.同步 ;更多功能
    • 控制任务 ;更多功能
    • 随着产品的发展,又有六个组件具有更多的功能。

    一般来说 合同.普通 被其他WCF协定程序集引用。遵循一些最佳实践阅读更多 WCF Architecture & Evoltion / Version ,有一个静态的常量类,比如我的NamespacePrefix,我用于所有合约。

    尽管我第一次开发了一个独立于普通合同的新合同。我们称之为 合同.新材料

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

    对于我的网络服务客户,我引用我的合同汇编,并使用它连接到各种网络服务&调用它们。

    奎斯顿

    合同.新材料 在编译时只使用常量的公共库(没有运行时程序集),如何阻止我的客户端也引用我的 合同.普通 装配

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


    更新1

    Add file as link 选项没有引用,只有一个地方可以编辑常量。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Community Mohan Dere    8 年前

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