问题描述
大家好,
我有一个 C++ dll 和一个 c# dll将程序集添加到缓存失败 尝试安装没有强名称的程序集,
我无法注册他们,
对于 c# dll,我得到的错误是
gacutil/i mycsharp.dll
"将程序集添加到缓存失败:尝试安装没有 s 的程序集
好名字"
对于 C++,我得到的错误是,
regsvr32 mycpp.dll
"mycpp.dll 已加载,但未找到 DllRegisterServer 入口点,无法注册此文件.".推荐答案如错误提示,您需要一个强名称.
查看 msdn 上的文档以创建强名称.
在互联网上进行搜索也会对您有所帮助.
首先,关于 GACUtil:
签署大会.签字.即使您在 GAC 中不需要它.如果要与应用程序一起部署将程序集添加到缓存失败 尝试安装没有强名称的程序集,请签名.
(您是否明白,您不必将库放在 GAC 中,仅当这是供您的用户使用的库?或者如果它被多个产品使用?不需要部署在几个程序集中只有一个应用程序.)
以二进制形式对您部署的所有内容进行签名.
请看:
[^],
[^].
请参阅此 CodeProject 文章:
强名称解释[^].
了解它的基础知识.这是员工非常重要的基本面之一.签署程序集需要几秒钟,但你应该明白为什么要这样做.
现在,关于 regsvr32:
这是一个注册COM DLL的工具,请看:
[^].
你确定你实现了这样的事情吗?
结论
您需要了解您正在开发什么,您要注册什么以及为什么.你开发COM吗?.NET 程序集?两个都?为什么?你真的需要注册GAC吗?如果这只是一个带有多个应用程序的软件产品,那么您甚至不需要任何安装.这取决于你的目的.从它开始.了解您使用的技术的基础知识,并在何时以及是否要提出其他问题时明确指出.
到目前为止,我对您的方法的印象是我称之为"踢电视机直到它开始显示图片".:-)
—SA
C++情况
你不能注册一个普通的dll.您只注册 COM dll.您的 dll 似乎不是 COM dll.所以你不需要注册它.您可以直接使用它.要了解如何使用客户端应用程序中的 dll,请参阅此链接 (v=vs.80).aspx[^]
版权声明
本文仅代表作者观点。
本文系作者授权发表,未经许可,不得转载。
发表评论