【问题标题】:how to create CLSID for a dll using regasm.exe如何使用 regasm.exe 为 dll 创建 CLSID
【发布时间】:2012-09-21 11:26:21
【问题描述】:

我们如何使用 regasm.exe 为 DLL 创建 CLSID

其实我想在网络上使用一个windows应用程序,我找到了一篇关于它的文章,我把链接贴在下面

http://www.codeproject.com/Articles/14276/Using-Windows-Application-on-web

在上面的文章中,我在第 10 步附近遇到了问题,其中指出:“现在通过使用“regasm.exe”创建 dll 的 CLSID 并将其放置在注册表中的 exe 文件位置“ C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\"."

我不确定如何为 dll 创建 CLSID?

【问题讨论】:

  • 您可以使用命令行实用程序uuidgen.exe创建一个
  • 命令行实用程序意味着Visual Studio命令提示符,你能说清楚一点吗?

标签: c# asp.net windows


【解决方案1】:

CLSID 标识 COM 类对象,而不是 DLL。

当您使用 regasm 注册您的程序集时,将为您的程序集中的每个 ComVisible 类注册一个 CLSID。

您可以通过在类上放置 Guid 属性来指定所需的 CLSID:

[GuidAttribute("12345678-9012-3456-7890-123456789abc")]
public sealed class MyComVisibleClass ...

或者如果你不使用这个属性,它会自动生成。

如果它是自动生成的,您可以使用“OLE Viewer”或类似工具检查 regasm 生成的类型库。

【讨论】:

  • 如何使用 regasm.exe 注册我的程序集?
【解决方案2】:

通过调用

regasm.exe /codebase /tlb whatever.dll

根据您的需要,可能不需要 /codebase 或 /tlb(即您也可以只尝试 regasm.exe whatever.dll)。

【讨论】:

  • 我只需要创建 CLSID 并获取它的值,我应该直接将它放在命令提示符中,即 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>regasm.exe/ myapp.dll....?
  • 当我尝试 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>regasm.exe\myapp.dll 时,由于目录名无效,我收到错误消息?
  • 不,引用的文章不是很好,并且使用了令人困惑的术语。您需要注册 dll(并且注册的一部分是将 CLSID 写入注册表等,但您自己不会这样做),它是通过执行 regasm 来完成的,正如我所写的。我相信您能够指定正确的 dll。如果需要 CLSID,可以在 OLE/COM 查看器工具(Visual Studio 的一部分)中打开生成的 tlb 文件(因此/tlb 开关)并从那里读取。
  • regasm.exe\myapp.dll 在您看来是什么样的?你有这个错误是否令人惊讶?你看我写的东西了吗?
  • 对不起我的跛脚,我在技术上不是那种声音....我打开了 microsovt Visual Studio 2010/microsoft windows sdk 工具/OLE-COM 对象查看器,我在那里找不到 tlb 开关? ..实际上你是说类型库吗?
【解决方案3】:

CLSID 是一个全局唯一 ID (=GUID)。它有一个固定的格式(见乔的回答)并且是“随机的”。您可以使用 guidgen.exe 创建一个。许多编辑器和 IDE 都具有创建 GUID 的功能。使用 regasm,您可以在 windows 中注册您的 COM 类对象的 GUID(=CLSID)。

【讨论】:

  • 所以首先我需要创建一个 GUID(这意味着 CLSID)然后我应该使用 REGASM.EXE 注册它,对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
相关资源
最近更新 更多