gpt4 book ai didi

c# - 无法在Powershell中加载.NET程序集

转载 作者:行者123 更新时间:2023-12-03 01:15:10 24 4
gpt4 key购买 nike

我有一个供应商提供的SDK,我正在使用一个特定的DLL,该DLL为供应商系统提供COM互操作。

我已经使用此DLL中的类成功创建了POC C#项目。我添加对DLL的引用,为命名空间voila添加using子句。我的目标框架是4.0,平台是x86。

我现在想使用Powershell来完成相同的任务,但是我无法加载DLL。

当我尝试

add-type -path $myDLL

要么
[System.Reflection.Assembly]::LoadFrom($myDLL)

我得到以下异常:
add-type : Could not load file or assembly 'file:///C:\Program Files 
(x86)\Interwoven\WorkSite\IManage.dll' or one of its dependencies. The module was expected to contain
an assembly manifest.
At line:2 char:1
+ add-type -path $myDLL
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-Type], BadImageFormatException
+ FullyQualifiedErrorId : System.BadImageFormatException,Microsoft.PowerShell.Commands.AddTypeComma
nd

我已经确认我正在Powershell中运行 x86 ,甚至尝试使用 here描述的方法强制CLRVersion匹配DLL ImageRuntimeVersion,但没有成功。

我在这里还想念什么?谢谢!
PS H:\> $env:processor_architecture
x86
PS H:\> $psversiontable

Name Value
---- -----
PSVersion 3.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.34209
BuildVersion 6.2.9200.16398
PSCompatibleVersions {1.0, 2.0, 3.0}
PSRemotingProtocolVersion 2.2

最佳答案

这里的主要线索是BadImageFormatException。这意味着您正在尝试将32位dll加载到64位PowerShell进程中或将64位dll加载到32位PowerShell进程中。

供应商是否正在提供要加载的互操作DLL,或者正在使用tlbimp之类的工具生成它?通常,这些DLL在架构上是中立的(任何CPU),除非它们需要在进程中调用DLL或加载COM DLL。

关于c# - 无法在Powershell中加载.NET程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31545746/

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