我正在开发一个项目,其设置使用Microsoft知识库文章KB317540中记录的API来安装和卸载GAC中的程序集。 KB文章指出:
内容
本机代码应用程序 编程接口(API) 允许您与全球互动 程序集缓存(GAC)不是 在.NET Framework中记录 软件开发套件(SDK) 文档。更多信息
注意:请勿使用 您的应用程序中的这些API 执行程序集绑定或测试 组件或其他的存在 运行时,开发或设计时 操作。只有管理工具 和安装程序必须使用这些 蜜蜂。如果您使用GAC,请执行此操作 直接将您的申请公开给 装配绑定脆弱或可能 使您的应用程序工作 在未来的版本上不正确 .NET Framework。GAC存储的程序集 在所有应用程序上共享 电脑。实际存储位置 并且GAC的结构不是 记录在案并且可能会发生变化 .NET Framework的未来版本 和Microsoft Windows操作 系统
唯一受支持的访问方法 GAC中的程序集是通过 此处记录的API 制品
大多数应用程序不必使用 这些API因为汇编 绑定由自动执行 公共语言运行库。只要 自定义安装程序或管理 工具必须使用这些API。微软 Windows Installer具有本机支持 用于将程序集安装到GAC。
有关装配的更多信息 和GAC一样,请参阅.NET Framework SDK。
使用以下GAC API 场景:安装时 汇总到GAC。当你删除 来自GAC的大会。当你 从GAC导出程序集。什么时候 你枚举的程序集 可在GAC中获得。注意: 之前必须调用CoInitialize(Ex) 你使用任何功能和 这个中描述的接口 说明书
这种技术的优点和缺点是什么?这些API是否可以安全使用?谁在那里使用它们?如果是这样,为什么?
答案 0 :(得分:1)
它说,“只有管理工具和安装程序必须使用这些API。”
有一些工具(例如命令行工具)可以与GAC协同工作。为什么不调用这些可执行文件,而不是直接使用这些API?
答案 1 :(得分:1)
为什么不创建Windows Installer程序包?见Demystifying the .NET Global Assembly Cache。引用:
Windows Installer的开发人员 包可以安装程序集 GAC使用Microsoft Windows Installer 2.0。这是安装此类共享程序集的首选方法 应该是分享的唯一方式 程序集安装在非 开发机器。