问题标签 [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.
visual-studio-2008 - regasm 和 tlb(为 COM 互操作注册 .NET 库)
我有一个带有一个公共类和几个私有类的 .NET 程序集。
我正在尝试为 COM 互操作注册它,以便我可以使用以下命令从 VBA 调用它:
regasm /tlb foo.dll /codebase
随后,当我在 Visual Studio 的“对象浏览器”中打开该.tlb
文件时,我看到该库没有公开任何类型。
有什么想法吗?
我意识到这里没有太多具体信息,所以如果你让我知道什么对诊断有用,我会尽力提供。
security - 将 regasm 用于位于 UNC 共享上的框架 4.0 程序集
我正在尝试使用 regasm 实用程序注册一个 .Net 4.0 编译的二进制文件。此 ComInterOp 程序集必须部署在网络共享上,并且尝试从共享中注册失败并出现错误“无法加载文件或程序集或依赖项之一”。(如果二进制文件在本地驱动器上,则注册有效)。可能是代码访问安全问题,有没有办法为框架 4.0 程序集设置它?我尝试过 4.0 框架附带的 Caspol.exe,但它没有帮助。
.net - COM 库的属性/方法描述
如果您创建一个 COMClass,我注意到当您引用生成的 tlb 文件时,XML 摘要标记中的值不会显示在 VB6/VBA 的对象浏览器中。有没有办法让这些值显示出来?
.net - 从经典 ASP 页面使用 .NET 程序集
我有一个旧的 .net 2005 网站,它有一些 asp 页面,并且在访问 .net dll 时遇到对象引用问题。维护任务交给了我,原来的开发者无处可寻 :(我已经从 .Net 开始了,所以我并不真正掌握处理这种 dll 地狱之类的问题。
在下面的箭头上,我遇到了“(0x80131500)对象引用未设置为对象的实例”。
我已经按照以下步骤操作:
- regasm /tbl /codebase mycomdll.dll
- gacutil /i mycomdll.dll
- 将 mycomdll.dll 复制到 System32 目录
- 从控制台,执行 issreset
- 如果您的 dll 是在 framework 2.0 中创建的,则在 system32 目录中创建一个“dllhost.exe.config”文件并将其放入:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
<requiredRuntime version="v2.0.50727"/>
</startup>
</configuration>
6.- 使用 issreset 命令重启 IIS
还有这些:
- 在项目属性下 a. 在 \application\assembly 信息下 i。选中“使程序集 Com-Visible”。湾。在构建 i。勾选“注册 Com Interop”</li>
- 不要签名。
- 确保 IUSR 对该文件具有完全权限。
- 通过 iisreset 重新启动 IIS 以刷新所有缓存。
并且仍然没有成功运行该应用程序。还有更多想法要检查或做什么吗?谢谢!
埃米尔
.net - 需要在 Windows 更新后将 .Net 程序集移动到程序文件
我有一个遗留的 Windows 客户端应用程序,它使用了几个 .Net 程序集(我创建的),一个带有 COM 包装器。客户端应用程序驻留在根驱动器子文件夹 (c:\somefolder...) 中。最近在 Windows 更新后,应用程序无法正确加载 .Net 程序集。在更新之前没有任何问题。
我通过将程序集移动到程序文件下的子文件夹并重新注册(regasm)COM 程序集,然后从根驱动器下的现有位置删除文件来解决了这个问题。虽然这现在有效,但它不是一个长期的解决方案。
我在不同的 Windows 更新后看到了这个问题,所以我无法将它固定在特定的更新上。该问题主要出现在 XP 机器上,但在 Vista 和 7 上也出现过。关于可能发生的情况有什么想法吗?谢谢。
.net - 注销旧版本的 .net 程序集
我有一个包含很多旧注册版本的程序集。
我唯一的dll是最后一个。
如何注销所有版本的程序集?
谢谢。
编辑:我想在运行时执行此操作,所以我想要类似 regasm -u... 或其他一些脚本解决方案。
wix - Wix - 如何自动调用 DLL 文件上的 Heat 以接收 regasm 信息
为了在安装期间模拟“regasm file.dll /codebase”执行,我们在要添加到注册表的 file.dll 上运行 Heat.exe。然后我们将生成的内容添加到我们的 installer.wxs 文件中,一切正常。
我们想自动化这个过程,这样我们就不必在每次 .dll 文件更改时手动运行 Heat.exe。相反,每次我们构建 Wix 项目时都会执行该调用。
我们该怎么做?一个代码示例将不胜感激。
谢谢,马克西姆
c# - 使用 WiX 在 GAC 中注册 COM dll
大家好,
我正在为我的程序编写一个 WiX 安装脚本。我需要将 C# dll 安装到 GAC,然后注册它。Assembly=".net"
所以,我用WiX GAC 为我标记文件,然后我有一个延迟的自定义操作,设置为 run before InstallFinalize
,它调用Assembly.Load
从 GAC 加载程序集,然后RegistrationServices.RegisterAssembly
注册它。
应该是完美的,除了一个问题:显然 dll 直到提交阶段才真正写入 GAC,所以当我的自定义操作运行时,Assembly.Load
因为找不到文件而抛出。它在哪里?在提交阶段之前是否可以访问?还是有更好的方法来完全做到这一点?好像是一件很琐碎的事情...
请不要建议使用heat.exe
;我真的很想避免它。如果可能的话,我的程序有一个ComRegisterFunction
想在用户计算机上执行的程序。
c# - 在仅 .NET-4 的系统上的 GAC 中使用以 .NET-2.0 为目标的 COM DLL
再次问候,
继我之前的问题之后,我试图最大限度地提高我用 C# 编写的 Windows Explorer 扩展的兼容性。特别是,我有兴趣确保它在安装了 .NET 4且未安装 .NET 3.5 及更低版本的环境中工作。有人会认为没有问题,但显然不是那么简单......
有两个问题。首先,非 .NET-4 目标程序集将不会使用 CLR 4 加载,除非它们有一个.config
指定<supportedRuntime version="v4.0" />
. 如果没有这个文件,即使尝试使用ngen
它们也会失败。.config
但我的 DLL 进入 GAC。我如何也可以.config
在其中获取文件?其他人也问过同样的问题,并得出结论“好吧,我将改为创建一个静态设置类。” 显然我不能这样做...
第二个问题:当我用 注册我的 DLL regasm.exe
,然后打开注册表查看它写的内容时,我RuntimeVersion = v2.0.50727
在它的 CLSID 条目下看到。这也可以防止加载 DLL。只有在我手动将RuntimeVersion
值更改v4.0.30319
为 DLL 加载后。
那么我必须让我的安装程序在这里做什么呢?对于第一个我不知道。第二,我想我必须让安装程序手动将注册表的 RuntimeVersion 设置为安装的任何 .NET 版本?这似乎太古怪了,不可能是真的……
.net - 可以安装吗。NET COM 库位于网络共享文件夹中?
使用位于网络文件夹中的 reg asm 注册的 COM 服务器无法正常工作。当您尝试创建对象时,会收到错误“自动化错误”。如果 dll 位于本地磁盘上,则一切正常。
附加信息:
.Net 3.5编写的COM库
通过 VB 宏访问 COM
图书馆有一个强大的名字