问题标签 [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 回答
459 浏览

com - RegAsm:来自程序集“A”的“MyAlgorithms.MyAlgorithm”类型中的方法“LoadContent”没有实现

我有以下类型(见下面的代码部分)。它已编译但 RegAsm 给出以下错误:“来自程序集 'A' 的 'MyAlgorithms.MyAlgorithm' 类型中的方法 'LoadContent' 没有实现。”

知道为什么吗?如果我不实现 LoadContent() 方法,它将不会被编译。

我在这里看到了一个几乎相同的问题: TypeLoadException 说“没有实现”,但它已实现 但没有帮助,因为:

A、B、C项目在同一个解决方案中,构建顺序为C、B、A。

所有项目的“构建后事件命令行”包含以下几行:

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" /u $(TargetPath)
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" $(TargetPath)
"c:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe" /u $(TargetName)
"c:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe" /if $(目标路径)

所以我认为项目 A 指的是正确的程序集。

如果我将下一个添加到 MyAlgorithmBase 类中,为什么会解决问题:

protected override void LoadContent(PersistenceReader reader) { }

谢谢!

凯特

0 投票
2 回答
1038 浏览

.net - VS10 对象浏览器中未列出程序集

我有一个需要使用第三方 DLL 的 VB.Net 项目,其中还有一个互操作程序集。所以我有这样的事情:

我尝试直接在项目中添加对互操作的引用,但在运行文件时出现 COM 未注册错误。

因此,我尝试按如下方式注册互操作:

即使重新启动 VS,程序集仍然不可见。

0 投票
3 回答
10937 浏览

.net - 为什么 regasm 会警告我使用强名称签名?

如果我想让 .NET 程序集可用作 COM 服务器,我必须添加一组属性,然后使用regasm它来将其注册为 COM 服务器。

如果程序集regasm在使用密钥运行时未使用强名称签名,则会/codebase显示RA0000警告,指出该程序集可能会干扰同一台计算机上的其他程序集,我应该使用强名称对其进行签名,但注册成功,它甚至可以正常工作。

AFAIK 强名称旨在防止所谓的 DLL 地狱。但 COM 也旨在防止 DLL 地狱。如果我更改任何暴露给 COM 的接口,我必须要么更改 GUID,要么至少保持二进制兼容性。所以用强名称签名似乎并没有增加任何有用的东西——没有什么能阻止我破坏 COM 接口,然后用相同的密钥对签名并拥有成熟的 DLL 地狱。

在 COM 公开的 .NET 程序集的情况下,使用强名称签名有什么用?

0 投票
2 回答
4530 浏览

.net - regasm 是行不通的

对于在 Web 中注册 .NET COM 对象的每个示例,我都看到了用于完成这项工作的工具“regasm”。每个人都这样做!!!
但它从来没有对我有用!我厌倦了试图克服它!我唯一的解决方案是 regsvr32,它需要一个我只能在 C++ 中定义的函数。
请告诉我为什么它不能正常工作!!!

考虑到它不适用于我的所有 4 台计算机以及 3 台运行 Windows 7 到 2000 的虚拟机,谁能给我看一个 regasm 调用的工作示例?我觉得我是个白痴。

0 投票
1 回答
2310 浏览

.net - 在 x64 系统上从 msi 启动时,Regasm.exe 安装失败

我有安装问题。安装运行一个命令行选项来 regasm.exe 一个带有 /codebase 选项的 .net com dll。

当我从 Setup.exe 运行安装(由 installshield 构建)时,一切正常。

当我从 .msi 运行安装时,regasm 调用不成功,没有注册任何内容并且程序不运行。

这个问题似乎只影响基于 x64 的系统,在 x86 系统上,这两种方法都有效。

任何想法可能是什么问题?

编辑

问题似乎是,即使以管理员身份登录,msi 也不会以管理员身份执行。我仍然得到一个 UAC 对话框,但只是在向导的中途。从 setup.exe 启动时,我会在向导出现之前获得 UAC 面板。如果我从 .msi 和管理命令提示符运行,那么我没有 UAC 面板,一切都按预期工作。

所以我想一切都按预期工作是吗?为了使自定义安装操作正常工作,必须以管理权限运行 msi?

0 投票
1 回答
356 浏览

c# - 您可以将 RegAsm 与可执行文件一起使用吗?

我有一个要注册的exe。我使用 tlbexp 工具拥有类型库,但是当我尝试重新加载可执行文件时,我得到一个error RA0000. 显然“不支持操作”?我不确定这可能是什么原因。我已经为各种类库使用 regasm 完成了许多其他工作,但从未使用可执行文件。那么它甚至可能吗?如果是这样,您是否必须使用其他方法?

0 投票
1 回答
2052 浏览

.net - c++托管和非托管静态库

我有一个带有简单代码的托管 C++ 程序集。

此程序集具有混合(托管/非托管)代码。如果我将非托管代码放入单独的非托管静态库并将其与托管代码链接,则会收到如下注册错误:“无法加载 'xxxxxx.dll',因为它不是有效的 .NET 程序集”。

如果我将所有代码放到一个项目中并一起构建,那么一切都很好。我已经在 VS2008 + .NET3.5 + RegAsm .Net2.0 上试过了。我的程序集已签署。

我想为非托管静态库和托管程序集保存我的代码分离。

我需要做什么?

提前致谢。

0 投票
0 回答
440 浏览

com - 将 .net 程序集注册为 com

我有一个调用本机代码 DLL 的 C# 类库。我正在尝试从 VBA 调用此代码。我将 MSVC 配置为注册生成的 DL,它工作正常。我可以访问 DLL 中的对象并毫无问题地使用它们。我想在另一台计算机上注册它们,我正在使用以下命令:%windir%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /tlb /v MyNetAssembly.DLL

该命令成功返回,但是当我尝试在 VBA 中使用 dll 对象时,我收到错误文件未找到(80070002)。我尝试将路径添加到 dll 所在的位置,使用 /codebase 选项将 dll 复制到 windows 目录,但没有成功。

有什么问题,我该如何解决?

0 投票
1 回答
825 浏览

com - 以编程方式从 TypeLibrary 获取 IDL 代码

我正在编写代码来执行以下步骤;

注册一个 .net .dll 并使用 regasm.exe 生成一个 .tlb

  1. 注册一个 .net .dll 并使用 regasm.exe 生成一个 .tlb
  2. 从 typeLibrary 生成 IDL 代码并将其存储在文件中。
  3. 编辑 IDL 代码,进行少量更改。
  4. 使用 Midl.exe 将 IDL 重新编译为 .tlb。

我确信您已经猜到了,我坚持的步骤是 IDL 的生成。我知道这可以通过使用 Windows API 附带的 OleViewer 手动完成,但是我想删除这个手动步骤。

我似乎无法通过命令行操作 OleViewer 或找到任何其他生成 IDL 代码的方法。

有人有什么想法吗?我知道生成 IDL 的代码必须在 OleViewer 的某个地方……也许有办法访问它?

0 投票
2 回答
10241 浏览

.net - 注册 .NET dll 以在 VB6 应用程序中使用

我有一个用 C# 编写的 DLL,我想在我的 VB6 应用程序中使用它。

在 VS2008 中,项目属性“注册 COM 互操作”被选中,当我编译 DLL 并尝试在我的开发机器上使用它时 - 它运行正常。

我需要在没有 VS2008 的计算机上运行它,所以我尝试像这样注册这个 DLL:

但是当我尝试运行它时,我收到了这个错误:

自动化错误。该系统找不到指定的文件。

谁能告诉我我做错了什么?