首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用无文档的本机代码APIs将项安装到GAC中。

使用无文档的本机代码APIs将项安装到GAC中。
EN

Stack Overflow用户
提问于 2009-09-16 00:02:40
回答 2查看 574关注 0票数 0

我正在从事一个项目,该项目的设置使用Microsoft知识库文章KB317540中记录的API将程序集安装和卸载到GAC中。KB条款指出:

摘要 .NET框架软件开发工具包(SDK)文档中没有记录允许您与全局程序集缓存(GAC)交互的本机代码应用程序编程接口(API)。 更多信息 警告:不要在应用程序中使用这些API来执行程序集绑定或测试程序集或其他运行时、开发或设计时操作的存在。只有管理工具和安装程序必须使用这些API。如果使用GAC,则直接将应用程序暴露在程序集绑定脆弱性中,或者可能导致应用程序在.NET框架的未来版本上工作不当。 GAC存储计算机上所有应用程序共享的程序集。GAC的实际存储位置和结构没有文档化,可能会在未来版本的.NET框架和Microsoft操作系统中发生更改。 访问GAC中的程序集的唯一受支持的方法是通过本文中记录的API。 大多数应用程序不必使用这些API,因为程序集绑定是由公共语言运行库自动执行的。只有自定义安装程序或管理工具必须使用这些API。Microsoft Windows Installer对将程序集安装到GAC具有本机支持。 有关程序集和GAC的更多信息,请参见.NET Framework。 在以下场景中使用GAC API :当您将程序集安装到GAC时。从GAC中移除程序集时。从GAC导出程序集时。枚举GAC中可用的程序集时。注意:在使用本规范中描述的任何函数和接口之前,必须调用CoInitialize(Ex)。

这种技术的优缺点是什么?这些API安全吗?有人在用它们吗?如果是,为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-16 00:53:19

为什么不直接创建一个Windows安装程序包呢?见.NET全局程序集缓存的神秘化。引用:

Windows安装程序包的开发人员可以使用MicrosoftWindowsInstaller2.0将程序集安装到GAC。这是安装此类共享程序集的首选方法,并且应该是在非开发机器上安装共享程序集的唯一方式。

票数 1
EN

Stack Overflow用户

发布于 2009-09-16 00:24:49

它说,“只有管理工具和安装程序必须使用这些API。”

有一些工具(例如命令行工具)可以与GAC一起工作。为什么不调用这些可执行文件,而不是直接使用这些API呢?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1430248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档