System.Management.Automation dll在Appx调用时抛出ItemNotFoundExcept
本文关键字:ItemNotFoundExcept 调用 Appx Management Automation dll System | 更新日期: 2023-09-27 18:07:23
我有一个很奇怪的问题。我已经在我的项目中添加了System.Management.Automation的引用,我正在尝试调用以下代码:
using (Powershell ps = Powershell.Create())
{
ps.AddScript("Get-AppxPackage");
ps.Invoke();
}
注意,我可以用这种方式运行其他powershell命令,只有Appx命令会引发异常。执行Get-AppxPackage命令会产生ItemNotFoundException异常。错误是:
抛出异常:'System.Management.Automation. 'ItemNotFoundException' in System.Management.Automation.dll
附加信息:无法找到路径"C:'Users'xxxx'Documents'WindowsPowerShell'Modules",因为它不存在。
我的第一个假设是这可能是一个工作目录的事情,所以我在调用命令之前显式地设置了工作目录,但这并没有改变任何东西。然后我检查了一下,发现那个目录不存在,所以我创建了它,只是想看看会发生什么。在创建目录并再次运行代码后,我得到了这个错误:
我真的不知道这里发生了什么。为了使问题更奇怪,我在另一台计算机上尝试了这个,代码工作得很好。所以一定是Visual Studio或者我的项目在那台电脑上出了问题。抛出异常:'System.Management.Automation. 'ItemNotFoundException' in System.Management.Automation.dll
附加信息:Cannot find path 'C:'windows'system32'windowspowershell'v1.0'Modules'Appx'Microsoft.Windows.Appx.PackageManager. .因为它没有
我试过删除debug和obj文件夹,so和所有这些。我删除了对System.Management.Automation的引用,并重新添加了它,甚至在两者之间重新启动。我很茫然,我不知道为什么会发生这种情况,也不知道我还能做些什么来弄清楚。
注意:我能够在Powershell ISE中运行Appx命令,所以在计算机上没有问题。问题只存在于通过System.Management.Automation dll调用该命令时。
OK,这个问题似乎是由于通过包管理器将不正确版本的System.Management.Automation作为nuget包安装而引起的。在我开始遇到上述问题之前,我已经卸载了这个,然后手动添加了对最新版本DLL的引用。
但是nuget包的卸载显然不能正常工作,因为项目继续引用这个版本,我试了什么也不能让它使用新版本。
为了解决这个问题,我创建了一个新项目,添加了源文件,直接添加了对新版本System.Management.Automation的引用,错误就不再发生了。
我只能假设使用包管理器安装和卸载错误的版本损坏了第一个项目。