Referencing Shell32.dll?

本文关键字:dll Shell32 Referencing | 更新日期: 2023-09-27 18:03:17

我没有。net 4.5来解压缩压缩文件,所以我使用这样的Shell32。但是当我像这样引用dll时:

csc.exe /r:"C:'Windows'System32'shell32.dll" ...

我得到这个错误:

fatal error CS0009: Metadata file 'c:'Windows'System32'shell32.dll' could not be opened -- 'An attempt was made to load
    a program with an incorrect format. '

更新:没有Visual Studio,只有csc.exe

Referencing Shell32.dll?

Shell32是一个COM服务器,您可以在c#程序中使用。但是,您必须首先生成一个互操作程序集,以将shell32.dll中的类型库(与。net元数据的想法相同)转换为CLR可以理解的声明。要么通过运行Tlbimp.exe,要么通过在IDE中添加对DLL的引用,这更简单。

只要您从命令行执行此操作,并且不使用msbuild来编译.csproj项目文件,那么您必须执行与msbuild相同的操作,运行tlbimp。对于shell32.dll,这只需要做一次,你可以在源代码控制中签入互操作库,这样你就不必再这样做了。在互操作库中使用/r

使用IDE或MSBuild.exe当然是明智的选择。还可以帮助您陷入成功的深渊,您真的想要使用嵌入互操作类型功能,因此您在运行时不需要互操作程序集,也不必部署它。查看MSBuild生成的构建命令是有用的。

可能是因为您试图像引用。net程序集一样引用它。

我将尝试使用/lib:参数来包含程序集,而不是按照…

/lib:dir1[,dir2]编译选项