.Net Assembly/dll 共享和部署

标签 .net deployment installation gac compatibility

我们有 3 个使用相同 .net dll(代码 + 旧版)的软件产品。
所有这些都使用跨 3/4 dll 的通用功能。

我想知道如何以及在哪里部署这些 dll。
这是最标准的方法。

S1] 连同其安装目录中的每个产品——可能是最简单的方法。
(但如果要在共享 dll 中发生任何更新 .. 它必须对所有 3 个 dll 进行。)

S2]放在普通文件夹里?

S3] 系统 GAC 对此有帮助吗?
(将所有 3 个放在 GAC 中,代码是共享的。但我担心版本控制?)

此外,如何为此类项目构建可部署的设置:

D1]在一个设置中打包所有 dll。每个设置都有自己的副本。
但是假设如果有人安装了软件 A,那么对于软件 B,共享文件已经存在于系统中。

D2]在单独的设置中部署公共(public)文件并打包每个文件。尝试检测文件是否已经存在,如果是,则不要部署。(这仍然无助于设置大小)
公共(public)文件夹 - 它应该是 GAC 还是系统上的某个文件夹?
涉及复杂的设置,因为它需要检查不同共享文件的版本。

还假设如果要发布新版本的软件并且它必须与旧版本共存..
如何保持跨多个版本的兼容性?

最佳答案

S1 + D1 当然。关于“如果有任何更新......”:这是一个好处而不是一个问题。如果您更改程序集,您将不得不重建正在使用的项目。 S1 场景允许您逐个项目地执行该操作,它们之间没有不必要的依赖关系。

不要将 GAC 用于小型库,这很麻烦。

关于.Net Assembly/dll 共享和部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1900708/

相关文章:

.net - 在 Windows 7 下从 .NET 应用程序中查找 USB 串口

android - 如何在Linux上安装Mobogenie?

deployment - Heroku 推送 : gzip stdin not in gzip format

tomcat - Web 服务器与部署服务器

asp.net-mvc - ASP.NET MVC 部署到 Azure

windows - NSIS 使用 GetParameters 的奇怪行为

node.js - 为 node.js 服务器安装 Forever 时出错

c# - 如何创建可读流?

c# - 为什么无法将任何字体保存为图像? (但要在我的窗体上显示它)

c# - sqlite 抛出一个 "String not recognized as a valid datetime"