gpt4 book ai didi

c# - 引用Shell32.dll?

转载 作者:行者123 更新时间:2023-12-02 10:49:48 25 4
gpt4 key购买 nike

我没有.NET 4.5解压缩zip文件,因此我正在使用this之类的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

最佳答案

Shell32是可以在C#程序中使用的COM服务器。但是,您必须首先生成一个互操作程序集,才能将shell32.dll中的类型库(与.NET元数据相同)转换为CLR可以理解的声明。可以通过running Tlbimp.exe或更简单地通过在IDE中添加对DLL的引用来实现。

只要您从命令行执行此操作,并且不使用msbuild来编译.csproj项目文件,则必须执行与msbuild相同的操作,运行tlbimp。对于shell32.dll,此操作仅需要执行一次,您可以在源代码管理中检入interop库,因此您无需再次执行此操作。在互操作库上使用/r。

使用IDE或MSBuild.exe当然是明智的选择。它还可以帮助您落入成功之路,您确实想使用Embed Interop Types功能,因此您在运行时不需要interop程序集,也不必部署它。查看由MSBuild生成的生成命令很有用。

关于c# - 引用Shell32.dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39053073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com