问题标签 [regasm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
178 浏览

.net - .net regasm 问题

假设我们有这种情况下部署一个.net com dll 并在其上运行 regasm 的设置,此设置没有卸载,因此 unregister 永远不会被调用..您可以一遍又一遍地运行设置..

这样做有什么危险吗??如果我使用新版本的 dll 部署新设置会发生什么。

从不运行卸载有什么危险吗?

0 投票
2 回答
9478 浏览

.net - 如何在没有 RegAsm.exe 的情况下注册类型库

我想知道是否可以在不使用RegAsm 工具的情况下注册类型库。这是我的情况,希望能解释我为什么要这样做:

我正在.NET 中开发一个程序集,它将为我们较旧的 VB6 应用程序提供一些现代功能。我已经使用 RegAsm 在我的开发机器上成功注册了程序集和类型库,如下所示:

上面的命令生成类型库 (MyAssembly.tlb) 并注册它以及注册程序集。我需要注册类型库,以便我可以在 VB6 中使用 Intellisense。

我对这种方法的问题 是,在生成类型库文件时我没有与TlbExp.exe相同的控制级别。特别是,我需要使用 TlbExp 的 /names 标志来指定我的属性名称的正确大小写(RegAsm 屠宰它们)。所以如果我使用 TlbExp 来生成我的 tlb 文件,有没有什么方法可以将它与程序集注册过程分开注册?

编辑: da_m_n 的回答对于我提出的问题是正确的。但是,我错误地假设,仅仅因为 RegAsm 可以注册一个类型库,就必须注册 tlb 以便在 VB6 中引用它。所以现在我正在注册程序集并使用固定名称引用未注册的 TlbExp 生成的 tlb。

0 投票
1 回答
288 浏览

c# - 启用 COM 的 .NET 用户控制

我创建了一个启用 COM 的 .NET 用户控件,我想知道将它部署给用户以在网页中使用该控件的最佳方法是什么?

cab 可以解决这个问题吗?我了解我需要重新调整用户机器上的控制。常规的 msi 会更好更容易使用吗?

谢谢

0 投票
2 回答
736 浏览

.net - .NET:regasm 和 caspol 取决于登录的用户

使用regasmandcaspol注册和授予程序集信任时,这些实用程序在哪个用户帐户下执行是否重要?

是否会出现只为机器或域上的某些用户注册和/或授予信任的情况?

0 投票
1 回答
1034 浏览

gac - COM 程序如何定位为 COM 互操作注册的 .NET DLL?

一位客户想要使用我们来自 VB6 的 .NET DLL。它们旨在支持反向互操作,并且一切正常……除了:两个不同的目录中有两个独立的 VB6 程序。似乎有必要执行以下操作之一:

  1. 将 .NET DLL 复制到两个目录中,或者
  2. 在 GAC 中安装 .NET DLL

这是客户的观察,也得到了RegAsm 文档的支持:

使用 Regasm.exe 注册程序集后,您可以将其安装在全局程序集缓存中,以便可以从任何 COM 客户端激活它。如果程序集仅由单个应用程序激活,您可以将它放在该应用程序的目录中。

在这一点上我很困惑。

第一点混淆:

据我了解,COM 运行时使用 Prog ID / Class ID 定位 DLL。当我在注册表中查看 Class ID 条目时,我在 CodeBase 键中看到了 .NET DLL 的完整路径。为什么使用 Prog ID / Class ID 的 COM 程序无法使用 CodeBase 找到 .NET DLL?

困惑之二:

GAC 特定于 .NET。它如何参与解析 COM 引用?

0 投票
1 回答
2447 浏览

c# - 必须注册 .tlb 文件?

我有一个 com interop c++​​ dll,它通过 c# 中生成的 .tlb 文件在 c++ 中加载。当我在我的计算机上运行时,它工作正常,但是当我在刚刚格式化的计算机上运行时,它会给出:

我是否必须为 .tlb 文件或其 dll 在系统中注册做一些事情?关于 regasm.exe 的东西?

如果是这样,是否可以只下载regasm.exe并使用它?

0 投票
1 回答
3585 浏览

vb6 - 用于 VB6 应用程序中的类库的 RegAsm

简而言之,我构建了一个 C# 类库,它既是 COM 可见的,又是为 COM 互操作而注册的。我已经编译了库,从而生成了 .dll 和 .tlb 文件。

我有另一台运行 VB6 应用程序的机器。因此,我将 .dll 和 .tlb 文件复制到机器上的 C:/Windows/system32 文件夹中。然后我使用以下方法注册了这些文件:

成功注册文件后,我从我的 VB6 应用程序中添加了对 Test.tlb 文件的项目引用,然后我尝试在我的新引用类中调用一个方法,如下所示:

它不起作用,我收到 -2147024894 自动化错误。

我读过我不应该将 dll 安装到像 system32 这样的私有文件夹中。我应该在 GAC 中注册,或者我应该使用“/codebase”选项在另一个位置注册:

有什么理由我不应该使用 system32?过去从事此项目的开发人员已将此 VB6 项目使用的程序集文件放入 system32 中,似乎没有任何问题。

当我在 system32 位置注册我的 dll 时,我得到了自动化错误。当我在另一个位置(即 C:/)注册我的 dll 时,从 VB6 到我的类库的方法调用按预期工作。是什么赋予了?

我应该提一下,我们不会使用 GAC 来注册任何 DLL。就是那样子。

任何帮助表示赞赏。

麦克风

0 投票
1 回答
2399 浏览

com - Regasm writes mscoree.dll into Registry key InprocServer32

When I register my .NET Assembly with regasm.exe the registry key

HKEY_CLASSES_ROOT\CLSID{111E32AD-4BF8-495F-AB4D-6C61BD463EA4}\InprocServer32

is set to "mscoree.dll".

However, I am trying to mimic an existing COM-Server that was written in C. When registering this old COM-server the InprocServer32 is set to the full path to this component.

Unfortunately the existing system (a plugin host that I can not change) reads and use this value - an is confused by the "mscoree.dll" value.

My solution might be to patch this registry entry manually - but I would like to understand why regasm writes "mscoree.dll" into InprocServer32 .

0 投票
2 回答
569 浏览

.net - 为什么需要在 .net 组件上多次运行 regasm 和 caspol?

为什么你需要多次regasm运行caspol一个组件?.NET

我有一个 COM 客户端,它使用.NET驻留在另一台机器上的组件。因此我需要在这个组件regasm上运行。什么可能导致需要在同一台机器上对同一组件再次执行此操作?caspol.NET

regasm的影响caspol只是暂时的吗?或者如果我必须再次执行此操作,我是否可以假设有人已重置或清除机器上的某些内容?

编辑:只需要运行 capsol。

0 投票
1 回答
32608 浏览

.net - 使用 Visual Studio 安装项目自动注册和 GAC 一个 COM 互操作 DLL

我为 COM 互操作创建了一个 .NET 程序集,它在我的开发机器上运行良好。我目前正试图弄清楚如何使用 Visual Studio 的“安装项目”将 DLL 部署到目标机器。如何使用 VIsual Studio 设置项目来执行以下操作:

  • 注册程序集(当前使用regasm)。
    • 程序集需要注册成功,类型库(.tlb)需要注册成功
    • 这个答案建议报废regasm以支持自定义代码。我这是个好主意吗?如果是这样,此代码如何包含在安装项目中?
    • 这个答案建议在安装项目中使用注册表的/regfile命令,regasm然后使用导入工具。这行得通吗?
  • 在 GAC 中安装程序集(当前使用gacutil
    • 我知道“目标机器上的文件系统”中的“全局程序集缓存文件夹”。在安装项目中包含程序集时我需要做些什么特别的事情吗?

任何其他建议或疑虑将不胜感激。