如何编译从命令行引用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();
}
}
答案 0 :(得分:2)
您需要使用tlbimp(或手动)创建互操作程序集,并直接引用COM dll。你将在com1.dll上运行tlbimp,然后引用tlbimp生成的Interop.com1.dll(或任何你称之为互操作的)。请注意,要使用tlbimp,COM组件必须具有类型库。
如果您要指定Interop.Foo
需要使用Foo
, tlbimp的默认命名空间将为Foo
,而不是/namespace:Foo
。