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

标签 c# dll versioning utility

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

我们正在努力改进我们的源代码控制约定,我们正在努力做的一件事是正确标记和发布这些库 DLL,因此客户端项目文件可以指向代码的静态版本,而不是始终-换行李箱。这证明有点令人费解 - 例如,一个同时引用 A 和 B 的客户项目。A 本身引用 B,因此从技术上讲,有两个来自客户项目的 B 引用。

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

虽然这似乎是一个简单的解决方案,但我认为我至少会征求第二意见。另一种方法是使用 GAC 并对所有内容进行强签名/版本控制。我在这里漏掉了什么吗?

最佳答案

我认为您将合并到一个库中是对的。

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

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

关于c# - 为什么我不应该有一个单一的整体实用程序库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1943320/

相关文章:

具有 SecuritySafeCritical 函数的 C# 完全信任的程序集仍然抛出安全异常

c# - 按名称查找标签并从后面的代码中设置标签文本

c# - 将 native dll 和其他文件添加到 .net exe

java - Jackrabbit/JCR 2.0 中的版本控制属性

git - 如何在 GitHub 问题中引用受影响的版本?

c# - 从基类调用时,GetType() 会返回派生程度最高的类型吗?

c# - 使用 C# 动态重命名 MS Access 中的列

java - 如何在加载 DLL 时加载 JVM 并在卸载 DLL 时释放它

python - 未解析的外部符号构建 Python C 扩展

php - 在 PHP 页面中嵌入 svn 修订号的简单方法?