805得票43回答
如何正确清理Excel互操作对象?

我正在使用C#中的Excel互操作 (ApplicationClass),并已将以下代码放置在我的finally子句中:while (System.Runtime.InteropServices.Marshal.ReleaseComObject(excelSheet) != 0) { } ex...

306得票18回答
由于以下错误:80040154,无法检索具有CLSID {XXXX}的组件的COM类工厂。

我使用C#.NET开发了一个Windows服务来生成PDF报告。为了生成PDF文件,我使用了第三方的DLL。该应用程序在我的Windows XP平台上运行。当我将服务部署到64位版本的Windows Server 2008中时,出现了以下错误: 检索具有CLSID {46521B1F-...

181得票15回答
一个“内存泄漏”的解剖学

从 .NET 视角来看: 内存泄漏是什么? 如何确定您的应用程序是否泄漏?会有哪些影响? 如何预防内存泄漏? 如果您的应用程序有内存泄漏,进程退出或被终止后问题是否解决?或者在进程结束后,应用程序中的内存泄漏是否对系统上的其他进程产生影响? 那么通过 COM 互操作和/或 P/Invoke...

101得票6回答
类型存在于两个程序集中。

我已经创建了两个.NET互操作组件,分别来自于两个不同的第三方COM DLL。这两个COM DLL都包含一个名称为COMMONTYPE的类型。因此,COMMONTYPE现在也通过这两个互操作组件公开。 我有一个需要使用这两个互操作组件的第三个项目,并且我遇到了臭名昭著的编译时错误: 引用中...

84得票3回答
将简单的C# DLL转换为COM互操作组件

如何将一个C# DLL转化为COM互操作DLL,以便VB6应用程序可以访问?

78得票2回答
"注册为COM互操作"与"使程序集对COM可见"的区别。

这两个选项的真正区别是什么?据我所知: 注册COM互操作 该选项在程序集上执行regasm并将程序集作为COM组件(或者可能不是)在注册表中注册,具有所有类似COM的注册表项。 这一步会生成TLB文件吗?还有其他操作吗? 有时候我编译项目时会看到生成tlb文件,但有时却没有,为什么会这样呢...

68得票1回答
“注册 COM 互操作”实际上是做什么的?

"注册 COM 互操作" 在 VS 项目选项中到底是什么?当我启用此选项构建我的库时,可以从 VBScript 中调用 CreateObject。但如果我不启用此选项,然后手动运行 regasm,CreateObject 将失败。所以我想知道,VS2010 做了什么我没有做的事情?

62得票10回答
以编程方式启动和停止IIS Express

我想在C#中构建一个小应用程序,它应该启动/停止IIS Express工作进程。为此,我想使用官方的“ IIS Express API”,该API在MSDN上有文档:http://msdn.microsoft.com/en-us/library/gg418415.aspx 据我所知,该API...

47得票9回答
无法将类型为“microsoft.Office.Interop.Excel.ApplicationClass”的COM对象转换为“microsoft.Office.Interop.Excel.Application”

我正在尝试在C#控制台应用程序中从Excel中捕获一些数据。 我遇到了以下错误: 无法将类型为“microsoft.Office.Interop.Excel.ApplicationClass”的COM对象强制转换为类型“microsoft.Office.Interop.Excel.Appli...

46得票2回答
使用IDisposable清理Excel Interop对象

在我的公司中,释放Excel Interop对象的常见方法是使用IDisposable,具体方法如下:Public Sub Dispose() Implements IDisposable.Dispose If Not bolDisposed Then Finalize...