Ami*_*itd 5 .net versioning assemblies gac
我必须向GAC部署一些程序集.我刚才有一些关于(我)理解GAC的问题.真让我困惑.
我想知道更改程序集和文件版本的版本.安装应用程序将替换GAC dll的可能组合是什么.和GAC文件的基本管理.
我将使用以下示例解释我的问题,以便更好地理解GAC:
假设我有产品A和B.
A和B都是指在GAC中安装的myfile.dll.
(i)汇编版本:[1.0.0.0]
(ii)汇编文件版本:[2.0.0.0](故意不同以避免更多混淆)
假设我有一个在myfile.dll中应用的错误修复程序.那么我应该改变哪个版本?
假设我有新版本的A说'ANEW'.然后应该更改哪个版本,以便A,B ANEW可以并排驻留.
假设我在GAC中安装了带有myfile.dll的'A',现在我尝试安装带有错误修复的gac dll的'B'.然后更改哪些版本以便更改反映在'A'中.
与Q3相同,但B的变化不应反映在'A'中.
假设'A'与myfile(1.0.0.0)一起安装.现在假设"B"正在安装myfile(1.xyz)..是否会替换GAC文件?
假设'A'与myfile(1.0.0.0)一起安装.现在假设'B'正在安装myfile(2.xyz)..是否会替换GAC文件?
假设'A'与myfile(1.0.0.0)一起安装.现在假设'B'正在使用myfile(1.0.0.0)进行安装,假设版本未更改..将替换GAC文件吗?
GAC dll如何被移除.是否有任何删除标准?
我想问题有点令人困惑,但希望你们知道我在问什么.
PS:与此主题相关的net-assembly-dll-sharing-and -loying
小智 4
1)取决于您为了修复错误而进行了什么样的更改。如果您更改任何公共接口或对行为进行重大更改,我会更改程序集版本号。如果没有,您可以像 Microsoft 那样执行该文件的唯一版本。
2) GAC 只关心程序集版本。因此,如果您希望两个名称相同的程序集并排存在,则它们必须因程序集版本而异。
3)我可能会更改程序集版本号,并包括发布者策略以将旧版本的客户端重定向到新版本。
4) 与 3 相同,但不包括发布者策略,或配置 A 绕过它。
5) & 6) 不,它是并排安装的。
7)我不这么认为,但这可能取决于它们的文件版本是否不同。我相信你可以尝试一下来验证一下。
8) 有一些参考资料可用于防止意外删除。MSI 使用它,因此如果您使用 MSI 进行安装,它会跟踪对程序集的引用,并且在卸载所有应用程序之前不会将其删除。如果您手动执行此操作(例如使用 Gacutil /uf),则可能会搞砸。