Tag: com interop

什么是“注册COM Interop”呢?

什么VS项目选项“注册COM互操作”实际上做什么? 因为当我使用此选项启用我的库时,我可以从VBScript调用我的库上的CreateObject。 但是,如果我没有这个build立,然后手动运行regasm的CreateObject失败。 所以我想知道 – 什么VS2010做,我没有做?

将一个简单的C#DLL转换成COM互操作组件

如何将C#DLL转换为VB6应用程序可以使用的COM互操作DLL?

“注册COM互操作”vs“使汇编COM可见”

这两种select的真正区别是什么? 我所知道的是: 注册COM Interop 这个选项在程序集上执行regasm,并将程序集注册为一个COM组件(或者也许不是)registry中的所有COM类似的registry项。 这一步是否会生成一个TLB文件? 还有什么呢? 有时我看到一个tlb是在我编译项目时产生的,但有时候不是,为什么呢? 使assemblyCOM可见 这个对assembly有什么影响? 如果我在这个程序集中有以下types,那么即使我的types被标记为ComVisible,是否还需要指定“Make assembly COM Visible”? [GuidAttribute("02810C22-3FF2-4fc2-A7FD-5E103446DEB0"), ComVisible(true)] public interface IMyInterface { }

“内存泄漏”剖析

在.NET的angular度来看: 什么是内存泄漏 ? 你如何确定你的应用程序是否泄漏? 有什么影响? 你怎么能防止内存泄漏? 如果您的应用程序有内存泄漏,当进程退出或死亡时它会消失吗? 或者即使在进程完成后,应用程序中的内存泄漏也会影响系统上的其他进程? 那么通过COM Interop和/或P / Invoke访问非托pipe代码呢? 我自己对这些问题有一些答案,但是它们不完整。 你怎么看?

以编程方式启动和停止IIS Express

我正在尝试在C#中构build一个小应用程序,该应用程序应该启动/停止IIS Express工作进程。 为此,我想使用MSDN上logging的官方“IIS Express API”: http : //msdn.microsoft.com/en-us/library/gg418415.aspx 据我所知,API是基于(只)COM接口。 为了使用这个COM接口,我已经通过添加引用 – > COM – >“IIS安装版本pipe理器接口”在VS2010中添加了对COM库的引用: 到目前为止这么好,但接下来呢? 有一个IIISExprProcessUtility接口可用,其中包括启动/停止IIS进程的两个“方法”。 我必须写一个实现这个接口的类吗? public class test : IISVersionManagerLibrary.IIISExprProcessUtility { public string ConstructCommandLine(string bstrSite, string bstrApplication, string bstrApplicationPool, string bstrConfigPath) { throw new NotImplementedException(); } public uint GetRunningProcessForSite(string bstrSite, string bstrApplication, string bstrApplicationPool, string bstrConfigPath) { throw new NotImplementedException(); } public […]

无法将“microsoft.Office.Interop.Excel.ApplicationClass”types的COM对象转换为“microsoft.Office.Interop.Excel.Application”

这是我第一次尝试从一个C#控制台应用程序中从Excel中捕获一些数据。 我得到错误“无法将types为”microsoft.Office.Interop.Excel.ApplicationClass“的COM对象转换为”microsoft.Office.Interop.Excel.Application“。 这段代码使用了“Microsoft Excel 12.0 Object Library”,并且引用了Microsoft.Office.Interop.Excel。 不过,我无法克服这个错误 – 我相信它有自己的快速解决scheme。 我挖了一点这个网站,并遇到了这个解决scheme: Interoptypes不能embedded 但是,我不明白,所以不能执行build议的解决scheme。 我的.Net版本是4.5。 任何帮助非常感谢。 提前致谢。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using Excel = Microsoft.Office.Interop.Excel; namespace deneme { class Program { static void Main(string[] args) { Excel.Application xlApp = new Excel.Application(); xlApp.Visible = true; // <– […]

实时(未保存的)Excel数据和C#对象之间的最快接口

我想知道什么是从一个打开的Excel工作簿读取和写入数据到c#对象的最快方式。 背景是我想开发从Excel使用的ac#应用程序,并使用Excel中保存的数据。 业务逻辑将驻留在C#应用程序中,但数据将驻留在Excel工作簿中。 用户将使用Excel,并在Excel工作簿上点击一个button(或者做类似的事情)来启动C#应用程序。 然后,C#应用程序将从Excel工作簿中读取数据,处理数据,然后将数据写回到Excel工作簿。 可能有许多数据块需要被读取并写回到Excel工作簿,但通常是相对较小的尺寸,例如10行和20列。 有时可能需要处理大量的数据列表,大约50,000行和40列。 我知道用VSTO做这个比较容易,但是我想知道什么是最快的(但仍然健壮和优雅)的解决scheme,并得到速度的想法。 我不介意解决scheme是否推荐使用第三方产品或使用C ++。 显而易见的解决scheme是使用VSTO或interop,但我不知道性能是什么样的,而我目前用来读取数据的VBA,或者是否有其他解决scheme。 这是张贴在专家交stream,说VSTO是比VBA慢得多,但那是几年前,我不知道是否performance有所改善。 http://www.experts-exchange.com/Microsoft/Development/VSTO/Q_23635459.html 谢谢。

检索具有CLSID {XXXX}的组件的COM类工厂失败,原因如下:80040154

我使用C#.NET开发了一个Windows服务来生成PDF报告。 生成PDF文件我正在使用第三方DLL。 该应用程序正在我的Windows XP平台上运行。 当我在Windows Server 2008 64位版本中部署服务时,出现此错误: 检索具有CLSID {46521B1F-0A5B-4871-A4C2-FD5C9276F4C6}的组件的COM类工厂失败,原因如下:80040154。 我使用regsvr32命令注册DLL。 我能够在registry中看到这个CLSID。 但问题依然存在。 可能是什么问题呢?

用IDisposable清理Excel互操作对象

在我的公司中,发布Excel Interop对象的常用方法是使用IDisposable以下方式: Public Sub Dispose() Implements IDisposable.Dispose If Not bolDisposed Then Finalize() System.GC.SuppressFinalize(Me) End If End Sub Protected Overrides Sub Finalize() _xlApp = Nothing bolDisposed = True MyBase.Finalize() End Sub 其中_xlApp是通过以下方式在构造函数中创build的: Try _xlApp = CType(GetObject(, "Excel.Application"), Excel.Application) Catch e As Exception _xlApp = CType(CreateObject("Excel.Application"), Excel.Application) End Try 客户端使用using-statement来执行有关excel互操作对象的代码。 我们完全避免使用两点规则 。 现在我开始研究如何释放(Excel)互操作对象以及我发现的几乎所有讨论,比如如何正确清理Excel互操作对象或释放Excel对象 ,大多使用Marshal.ReleaseComObject(),但都不使用IDisposable接口。 我的问题是:使用IDisposable Interace发布excel互操作对象有什么缺点吗? 如果是这样,这些缺点是什么。

如何正确清理Excel互操作对象?

我在C#中使用Excel互操作( ApplicationClass ),并在我的finally子句中放置了下面的代码: while (System.Runtime.InteropServices.Marshal.ReleaseComObject(excelSheet) != 0) { } excelSheet = null; GC.Collect(); GC.WaitForPendingFinalizers(); 虽然这样的作品, Excel.exe进程仍然在后台,即使我closuresExcel。 只有在我的应用程序被手动closures时才会被释放。 我做错了什么,或者有没有其他办法来确保互操作对象被妥善处置?