Powershell 无法加载WITDataStore64 dll

Powershell 无法加载WITDataStore64 dll,powershell,Powershell,我正在尝试运行PowerShell脚本,必须加载几个程序集才能完成任务。大多数程序集都可以正常加载,但有一个程序集无法正常工作: Microsoft.VisualStudio.Services.Common.dll 我试过几种不同的方法 我尝试了LoadFrom、ReflectionOnlyLoadFrom和Add-Type-Path方法,但它们都返回一个错误 无法加载文件或程序集“path\Microsoft.WITDataStore64.dll”或其依赖项之一。模块应包含程序集清单 Full

我正在尝试运行PowerShell脚本,必须加载几个程序集才能完成任务。大多数程序集都可以正常加载,但有一个程序集无法正常工作:

Microsoft.VisualStudio.Services.Common.dll

我试过几种不同的方法

我尝试了LoadFrom、ReflectionOnlyLoadFrom和Add-Type-Path方法,但它们都返回一个错误

无法加载文件或程序集“path\Microsoft.WITDataStore64.dll”或其依赖项之一。模块应包含程序集清单

FulllyQualifiedErrorID:BadImageFormatException

我尝试了ReflectionOnlyLoad,但只是返回了一个错误,即

使用“1”参数调用“ReflectionOnlyLoad”时出现异常:“无法加载文件或程序集“$pathToDlls\\Microsoft.WITDataStore64.dll”或其依赖项之一。给定的程序集名称或代码库无效

(HRESULT的例外:0x80131047)

路径是正确的-我已经直观地确认文件在那里-并且dll的名称也是正确的(复制粘贴文件名只是为了确保)。其他DLL加载正常;只是这个没有加载

微软有一个,它建议我“通过使用开发语言提供的功能访问DLL中定义的方法。”我认为它假设我使用的不仅仅是PowerShell。如果有办法通过powershell访问DLL的方法,我不知道


是什么让这个dll的加载变得特别棘手,我如何才能让它加载?

您得到的错误是,一些代码试图将本机dll(缺少使其成为CLR程序集的神奇位)作为程序集加载

程序集
Microsoft.VisualStudio.Services.Common.dll
可以通过nuget以不同版本获得,并且可以以任何版本安装在本地计算机上

我还看到一些关于加载相同程序集的问题和bug

我能够将包的旧版本从
NuGet
加载到本地文件夹,并在powershell中访问它:

  • 安装.net核心SDK(2.0或更高版本)
  • 安装
  • 创建一个空白文件夹
  • 在文件夹中打开powershell提示符
然后运行:

dotnet new console --target-framework-override net452
dotnet add package Microsoft.TeamFoundationServer.ExtendedClient -v 14.89.0
dotnet build .
add-type -Path .\bin\Debug\net452\Microsoft.VisualStudio.Services.Common.dll
[microsoft.visualstudio.services.common.VssEnvironment]::GetTfsSharedFilesPath()

如果这样做有效,您可能希望将其切换为使用
nuget.exe
-这不需要安装SDK,但我不知道如何使用它。

请检查
$Error[0]。Exception | fl*-Force
$Error[0]。Exception.InnerException | fl*-Force
了解有关根本原因的更多详细信息(发布完整的异常详细信息,而不仅仅是错误消息)完成,但内部异常只是重复错误消息所说的内容。“无法加载文件或程序集或其依赖项之一。给定的程序集名称或代码库无效。”没有错误代码、HRESULT值或类似值?请重新阅读问题,您可能应该使用
ReflectionOnlyLoadFrom()
而不是
ReflectionOnlyLoad()
是否使用32位PowerShell?