问题标签 [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 投票
3 回答
4791 浏览

.net - 以编程方式注册生成的 VB.Net DLL 程序集而不锁定 DLL

我有一个简单的 VB.Net 4 WinForms 应用程序,它可以生成基本代码。代码生成完美地创建了一个 DLL 程序集,但每次生成 DLL 时都需要以编程方式向 GAC 注册。必须注册它的原因是它是一个 COM 对象,在部署时会从 VB6 应用程序通过 CreateObject 调用。呃,我知道。

所有这些工作正常:DLL 生成、以编程方式注册和使用从 VB6 应用程序生成的 DLL。

问题是我的执行代码生成的应用程序只能在 DLL 被进程锁定之前生成一次 DLL,如果不停止 EXE 并重新启动它,就无法解锁它。这显然会阻止代码生成工具的用户在不重新启动应用程序的情况下进行更改和重新编译 DLL。

导致锁定的代码如下(在定义变量“asm”的行上):

正如我在网络上的许多文章中看到的那样,我已经尝试将程序集定义放入不同的 AppDomain 中,但是我提出的实现都没有奏效。事实上,几乎所有这些最终都生成了然后在两个 AppDomain 中定义的程序集。我也试过做一个 ReflectionOnly 程序集加载,但为了注册函数,程序集必须在活动模式而不是反射模式下加载。

它抛出的实际错误是这个美妙的宝石:

如果有人对我能做些什么来解决这个问题有一个答案,我将不胜感激!就像我说的,它在第一次 DLL 编译时效果很好,但随后的 DLL 编译失败,因为程序集被应用程序进程锁定。

我的完整编译器类定义如下。我留下了一些我尝试过的其他东西,对于混乱感到抱歉:

0 投票
1 回答
13840 浏览

.net - regasm RA0000:未注册任何类型

我有一个 C++/CLI 程序集(为 Windows 7 附带的 .NET 3.5 编译)。该程序集标记为ComVisible(true)。它包含2个类和1个接口。这两个类都被标记为ComVisible(false)所以它们不应该重要。该接口标有InterfaceType(ComInterfaceType::InterfaceIsIUnknown)特定的 GUID。该接口需要注册。

当我尝试使用 注册此程序集RegAsm.exe AssemplyName时,我收到以下警告:

我的程序集依赖于与我的主程序集位于同一目录中的 3 个其他程序集。其中 2 个注册没有问题,第 3 个没有标记为ComVisible

任何想法为什么我无法注册我的程序集?

0 投票
1 回答
664 浏览

c# - c# ContextMenu 处理程序

我尝试使用此代码为我的应用程序开发自己的上下文菜单处理程序:http: //www.codeproject.com/KB/shell/ratingcolumn.aspx

然而什么也没发生。然后我尝试编译该代码,构建 dll 并使用

注册它,这是我得到的答复

但是没有出现新的文件评级菜单(尝试重新启动窗口,刷新关联,菜单,一切)。我错过了什么吗?我应该注册 DLL 吗?

0 投票
1 回答
457 浏览

interop - 在 Excel 中从 VBA7 引用的 64 位程序集中使用 .NET Framework 库

我有一个用 C# 编写的库,它使用标准的 .NET 框架库(System、System.Windows.Forms)。这个库是 COMVisible 以及它的类,我只有两个类: - TestClass(一个具有一种方法的类) - TestForm(一个空表单)

我按照此处的建议注册了程序集:C# COM DLL: do I use Regasm, or Regsvr32?

然后我转到我的 Excel 加载项并添加对生成的 .TLB 文件的引用。

我能够创建我的“TestClass”的一个实例并毫无问题地调用它的方法,但是当我尝试创建我的“TestForm”的一个实例时,它向我显示了这个错误:

根据我在尝试让类工作时看到的问题,问题是 Excel 没有找到其中一个依赖项(我猜是 System.Windows.Forms)。

如何从我的 64 位 Office 加载项打开用 .NET 编写的表单?

提前致谢

0 投票
1 回答
578 浏览

c# - Regasm /codebase 失败,说在设置 copylocal=true 时找不到指定的文件

我正在尝试使用 regasm /codebase 注册程序集。一切正常,但我的项目要求迫使我将引用的 dll 的 copylocal 属性设置为 false。完成后,regasm 失败,说它找不到依赖的 dll 文件。当 copylocal 设置为 false 时,一切正常。有什么问题我该如何解决?dll 始终驻留在共享文件夹中。

0 投票
1 回答
4966 浏览

visual-studio-2008 - 如何使用 Visual Studio 2008 部署 .dll 文件?

我正在使用 VS 2008 创建一个安装程序,其中包含一个桌面应用程序和一个作为类库项目创建的 BHO 插件。手动,我可以使用此命令注册 myPlugin.dll [regasm /codebase "myPlugin.dll" register],但我不知道如何在安装项目中实现这一点。请问有什么想法吗?

0 投票
1 回答
148 浏览

.net - 我可以使用 regasm 将 .Net COM 注册为 SingleUse

我可以使用SingleUse -flag 注册一个 .Net COM 类吗?

我想使用 SingleUse 的原因是,否则 COM 实例中的静态字段(客户端应用程序使用 2 个具有不同数据库连接字符串的实例)是共享的,从而导致任何 COM 实例访问同一个数据库。

0 投票
1 回答
2923 浏览

c# - 无法从活动 x 组件创建对象

我在 C# 中编写的活动 x 组件有问题。尽管我已经用 regasm 注册了 dll,但我目前无法创建一个活动的 x 对象......

这是我在课堂上的代码:

这是界面:

当我在 vb 脚本中尝试一个简单的 CreateObject

我也试过:

我收到错误:800A01AD ActiveX 组件无法创建对象

其他人有同样的问题吗?

编辑:我还在 ole 查看器中看到了该组件...

谢谢

0 投票
0 回答
507 浏览

com - 如何在 HKCU 中注册 COM 可见程序集(无 MSI)

regasm.exe 似乎只能在 HKLM 中为整个系统注册一个 COM 可见的程序集。有没有办法只为登录用户执行此操作,无需 MSI 安装程序?

我考虑过使用 regasm 转储一个 .reg 文件,然后自己处理它以添加注册表项......如果我可以避免的话,我不想重新发明轮子。

0 投票
1 回答
247 浏览

.net - 这是为 COM 注册 .NET 类型的一种可能方法吗

我有一个 .NET 程序集并使用 regasm.exe 注册 COM。用户使用 tlb 在 Excel 中用 VBA 编写代码。

我做了一个 regasm /regfile,我看到所有的注册表项都属于“HKEY_CLASSES_ROOT\”。我有一个管理员约束(遗憾的是)在所有用户的机器上运行 regasm,因为它需要管理员访问权限才能将注册表项写入 *HKEY_CLASSES_ROOT*。

我的问题是,如果我将其更改为写入“HKEY_LOCAL_MACHINE”或“HKEY_CURRENT_USER”,COM 互操作是否仍然有效并且 Excel 是否能够找到我的类型?

这样,我想我可以为我的用户争取更少的特权,这样他们就可以运行这个新的 reg 文件而不是运行 regasm。

谢谢玛尼