为什么我不应该有一个单一的整体实用程序库?

2024-04-02

我们有一些通用库(C#,但我想这不是特定于平台或语言的),我们称它们为 A、B 和 C。库 A 引用了 B 和 C,库 B 引用了第三方 DLL,库 C 是独立的。三个独立项目背后的想法是,每个库都有不同的功能,但随着时间的推移,库 A 或多或少成为了大多数客户端应用程序都会引用的“包罗万象”的通用库。只有少数应用程序引用了 B 和/或 C,而没有引用 A。

我们正在努力改进我们的源代码控制约定,我们正在尝试做的一件事就是正确标记和发布这些库 DLL,以便客户端项目文件可以指向代码的静态版本,而不是始终变化的主干。事实证明,这有点复杂 - 例如,一个客户端项目同时引用 A 和 B。A 本身引用 B,因此从技术上讲,有两个来自客户端项目的对 B 的引用。

因此,显而易见的事情似乎是将所有内容合并到一个具有组织良好的命名空间的通用/实用程序库中。正如我所说,几乎每个客户端应用程序都会引用这些库之一,所以谁在乎呢?这样做不会引入任何与第三方依赖项相关的不良情况,并且我们所有的目标机器都是内部的,并保持大致相同的环境/软件配置。

但这似乎是一个太简单的解决方案,所以我想我至少会得到第二个意见。另一种方法是使用 GAC 并对所有内容进行严格签名/版本控制。我在这里遗漏了什么吗?


我认为你整合到一个库中是正确的。

很多时候,代码被组件化为太多的可部署单元,而功能的逻辑部分似乎是分离的标准。国际海事组织这是错误的。程序集应该与部署场景和发布周期保持一致。否则,您最终会得到一个极其复杂的依赖关系图,其中无论如何每个程序集都是一起管理、构建和部署的。

不过很有趣的问题!让我们看看其他人的想法:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不应该有一个单一的整体实用程序库? 的相关文章

随机推荐

  • NSExtensionRequestHandling 不处理本机消息

    我正在尝试为我的本机应用程序创建 Safari Web 扩展 我想要一个带有按钮的弹出窗口 单击该按钮将与我的本机应用程序进行通信 在开始这部分之前 我在发送本机消息并在其中处理它时遇到了问题beginRequest类中的函数符合NSExt
  • 如何确定 UIWebView 的内容大小?

    我有一个UIWebView具有不同的 单页 内容 我想了解一下CGSize内容以适当调整我的父母视图的大小 显而易见的 sizeThatFits 不幸的是只返回 webView 的当前帧大小 事实证明 我的第一个猜测是使用 sizeThat
  • 使用继承时出现重复的外键

    我创建了这些类 以便通过 EntityFramework 6 代码优先方法生成数据库模型 public class Vehicle public long Id get set public long ResponsiblePersonId
  • 卡兹马兹动画

    我正在寻求帮助 我想在 Matlab 上为 Kaczmarz 方法制作动画 它的方法允许通过在超平面上的串行投影解向量来找到方程组的解 该解向量由系统方程组给出 我想制作该矢量移动的动画 就像该点在投影矢量上一样 System of equ
  • Joomla 3.2.3 精选文章排序

    在 Joomla 3 2 3 中 我无法像 J 1 5 x 那样进行文章排序 我想让首页文章排序像我在管理员区域中定义的那样 我尝试了几种方法 但仍然没有任何成功 已经 1 周了 我最后一次尝试的是这样的 a Content gt Feat
  • 如何以编程方式获取类依赖项及其各自的文件位置?

    我需要获得给定项目的类之间的某种依赖关系图 即该特定类使用的所有类 我想知道给定的类正在使用哪些类 以便以后可以在项目中找到它们的文件路径 考虑以下简单示例 public class Dog Animal IBark public void
  • OpenGL 2 纹理内部格式 GL_RGB8I、GL_RGB32UI 等

    我正在重写大部分纹理代码 我希望能够指定某些内部格式 GL RGB8I GL RGB8UI GL RGB16I GL RGB16UI GL RGB32I 和 GL RGB32UI 这些标记在 OpenGL 2 中不存在 当将这些内部格式指定
  • 无法使用 pip 安装 Openvino

    我正在尝试安装 Openvino 将 Keras 模型转换为推理引擎的表示形式 我正在运行命令 python3 openvino tools mo mo tf py model 13 h5 input shape 180 180 这会返回错
  • 我如何知道 viewScope 变量是否已初始化

    在应用程序中 我需要知道 viewScope 变量是否已初始化 创建 viewScope 变量时 该值可能为 null 所以 viewScope isEmpty SomeName 并没有告诉我它已经被初始化并且答案为 null 或者它还没有
  • 标签周围的填充在 Internet Explorer 中不起作用

    我无法让 IE 填充 标签正常工作 这仅适用于 Firefox Safari Chrome 但不适用于 IE 请帮忙 我的简化 HTML 代码如下所示 div table tr td a style padding 20px backgro
  • 在 R 中,如何将两个 XML 文档合并为一个文档?

    我正在从基于 XML 的 API 查询数据 API 响应是分页的 因此我必须进行大量查询才能获取完整的数据集 Using read xml来自xml2包中 我可以轻松地发出每个请求并将其保存为 XML 文档 但我一直无法弄清楚如何使用该库将
  • 类型错误:(0,_schemaUtils.default)不是函数

    我有一个简单的 React 应用程序创建create react app在本地主机上运行良好 我现在正在尝试 Dockerify 该应用程序 这是我的 package json name yeet version 0 1 0 engines
  • SSIS 2008 中 ADO NET 源和 OLE DB 源之间的区别?

    谁能说出 SSIS 2008 中 ADO NET 源和 OLE DB 源之间的区别 它们在任何上下文中都相同吗 对于小型数据集 SSIS 2008 中的 ADO NET 源和 OLE DB 源之间几乎没有什么区别 它们之间的区别在于它们与其
  • 作为承诺的结果表示重新发送

    我不明白发生了什么事 Using q承诺 这有效 const deferred q defer deferred resolve Hellow const myPromise deferred promise router get item
  • OpenGL 统一缓冲区 std140 布局

    我正在尝试通过 GeForce 8600 GT 上的统一块将整数数组传递给片段着色器 一切均根据 GLSL version 330 在应用程序方面我有 int MyArray 7102 filling binding etc glBuffe
  • 为控制台应用程序制作 UI [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何为控制台应用程序制作一个界面 使它们看起来像edit com在微软的操作系统下 目标语言是 C C 和 C NET 看一下curs
  • 如何将序列中的下一个值放入变量中?

    因此 我正在编写一个存储过程 但无法将序列的下一个值放入变量中 序列名称被传递到函数中并存储为varchar2多变的 如何将该序列中的下一个值放入局部变量中 像这样的东西吗 create or replace procedure next
  • gulp 命令给出找不到模块的错误

    我正在尝试在 Windows 上设置基本的 aurelia 应用程序 我已遵循以下指示 http aurelia io get started html http aurelia io get started html 包括 安装节点js
  • 如何获取宿主元素引用?

    如何获取 Angular 2 中的宿主元素引用 就我而言 我想知道我的组件是否有焦点 您可以使用以下方式获取宿主元素引用 class MyComponent constructor private elRef ElementRef cons
  • 为什么我不应该有一个单一的整体实用程序库?

    我们有一些通用库 C 但我想这不是特定于平台或语言的 我们称它们为 A B 和 C 库 A 引用了 B 和 C 库 B 引用了第三方 DLL 库 C 是独立的 三个独立项目背后的想法是 每个库都有不同的功能 但随着时间的推移 库 A 或多或