使用csc.exe编译引用COM DLL的程序集

时间:2010-08-22 18:13:59

标签: c#

如何编译从命令行引用COM DLL的.cs程序?

假设我的COM DLL具有以下路径:C:\ Projects \ com1.dll 假设C#代码在文件中:C:\ Projects \ program.cs

我试过这个 csc.exe / lib:“C:\ Projects”/reference:com1.dll“C:\ Projects \ program.cs”

希望得到program.exe这个失败,所以这个方法对COM dll的引用是错误的路径。

- 参考第一个答案添加细节 - 好的,假设在这种情况下我正在使用ADO

tlbimp "C:\Program Files\Common Files\Syste \ado\msador15.dll"

获得此回复

Type library imported to ADOR.dll

现在将tlbimp创建的新DLL放入与其中使用ADODB的程序相同的目录中:

csc /lib:. /reference:ADOR.dll Program.cs

返回

Program.cs(2,7): error CS0246: 
The type or namespace name 'ADODB' could not be found 
(are you missing a using directive or an assembly reference?)

- 超载问题 -

using System;
using ADODB;

class Program
{
    static void Main(string[] args)
    {
        Connection connection = new Connection();
        connection.Open(args[0]);
        //connection.Open(args[0], "", "", -1);
        Console.WriteLine(connection.State);
        connection.Close();
    }
}

1 个答案:

答案 0 :(得分:2)

您需要使用tlbimp(或手动)创建互操作程序集,并直接引用COM dll。你将在com1.dll上运行tlbimp,然后引用tlbimp生成的Interop.com1.dll(或任何你称之为互操作的)。请注意,要使用tlbimp,COM组件必须具有类型库。

如果您要指定Interop.Foo需要使用Foo

tlbimp的默认命名空间将为Foo,而不是/namespace:Foo