14得票2回答
我需要在每个“foreach”迭代中释放COM对象吗?

这里是(可能的)问题: 我创建了一个COM对象,然后使用“foreach”循环遍历它返回的集合中的每个元素。我需要释放我迭代的集合中的每个单独元素吗?(请参见下面的代码。)如果需要,我无法想到一种有效的方法在“finally”语句中释放它,以防在操作该项时发生错误。 有什么建议吗? pr...

14得票2回答
无法在COM客户端中添加对COM的引用?

创建了一个COM服务器并进行了注册。 当我尝试在COM客户端中添加该COM服务器时,无法添加,并出现以下错误: "无法添加对'COMTest'的引用 ActiveX类型库'c\user\~\Debug\COMTest.tlb'是从.NET程序集导出的,因此无法作为引用添加。...

14得票3回答
如何正确地在用C#编写的COM组件中传递VB-Script数组

我正在使用C# (.Net 4.0)构建一个COM对象,用于经典asp网站。现在我想知道如何在组件和asp站点之间传递VB-Script数组(单维和多维)的正确方法是什么?非常感谢提供示例代码。

13得票3回答
一种MTA控制台应用程序调用多个线程的STA COM对象。

虽然有很多关于COM和STA/MTA的问题(例如这里),但大多数都是谈论具有UI的应用程序。而我有以下设置: 一个控制台应用程序,默认情况下为多线程公寓(Main() 显式具有 [MTAThread] 特性)。 主线程生成一些工作线程。 主线程实例化单线程COM对象。 主线程调用 Cons...

13得票1回答
释放临时COM对象

考虑下面使用 COM 对象的 C# 代码。 MyComObject o = new MyComObject; try { var baz = o.Foo.Bar.Baz; try { // do something with baz } finally { Mars...

13得票1回答
为什么我要使用“Both” COM线程模型而不是“Free”?

根据这篇文章的说法,如果我将我的COM对象注册为“Both”或“Free”线程模型,则该对象必须完全支持多线程。具体来说,对于所有全局共享变量的访问都必须进行同步,对于成员变量的所有访问也必须进行同步。这需要付出很大的努力。 现在我理解了,将我的对象注册为使用“Free”线程模型是有利的,而...

13得票2回答
在Excel VBA中进行COM互操作时,调用regasm无需管理员权限

已经在此处描述了在没有管理员权限的情况下调用regasm的解决方法: 无需regasm进行COM互操作 我正在尝试创建一个COM库,我的用户可以在Excel VBA中部署和使用而不需要管理权限。我喜欢regasm的解决方法,因为似乎人们在从Excel VBA使用无需注册的COM对象方面并不...

12得票1回答
我该在.NET应用程序中部署Interop.x.dll文件吗?

我们有一个.NET应用程序,它使用不同DLL中的COM对象,这些DLL也在我们应用程序的VB6部分中使用。当引用COM库时,Visual Studio 2012会创建一个Interop.x.DLL并引用它。我应该从构建机器上分发Interop.x.DLL还是使用某个.NET命令行工具重新生成它...

12得票3回答
警告MSB3391: <DLL>不包含任何可以用于取消注册COM互操作的类型

我使用VS2005制作了一个简单的C# DLL(它是一个更大项目的一部分)。我需要通过VBA代码在Excel中使用该DLL,因此我正在使用程序集上的COM互操作。我正在尝试使构建过程自动生成必要的TLB文件,以便我不需要在每次构建后去命令行并使用regasm。 我的问题是,尽管DLL编译和构...

12得票3回答
当引用ActiveDs或MSXML2的COM对象时出现大量构建警告

将一个项目从.NET 1.1迁移到.NET 2.0后,MsBuild为某些COM对象发出大量警告。测试用的示例代码(实际代码不重要,只是用于创建警告):using System; using System.DirectoryServices; using ActiveDs; namespace...