2015-08-12 2 views
0

У меня очень странная проблема. Я добавил ссылку на System.Management.Automation в моем проекте, и я пытаюсь вызвать следующий код:System.Management.Automation dll throws ItemNotFoundException при вызовах Appx

using (Powershell ps = Powershell.Create()) 
{ 
    ps.AddScript("Get-AppxPackage"); 
    ps.Invoke(); 
} 

Обратите внимание, что я могу запускать другие команды PowerShell таким образом тонким, это только команда Appx которые создают исключение. Выполнение команды Get-AppxPackage приводит к исключению ItemNotFoundException. Ошибка:

Exception thrown: 'System.Management.Automation.ItemNotFoundException' in System.Management.Automation.dll

Additional information: Cannot find path 'C:\Users\xxxx\Documents\WindowsPowerShell\Modules' because it does not exist.

Моего первое предположение, что это может быть рабочим каталог вещь, поэтому я явно установить рабочий каталог перед вызовом команды, но это ничего не изменило. Затем я проверил, и этот каталог не существует, поэтому я создал его, чтобы увидеть, что произойдет. После создания каталога и снова запустить код, который я получил эту ошибку:

Exception thrown: 'System.Management.Automation.ItemNotFoundException' in System.Management.Automation.dll

Additional information: Cannot find path 'C:\windows\system32\windowspowershell\v1.0\Modules\Appx\Microsoft.Windows.Appx.PackageManager.Commands' because it does not

Я честно понятия не имею, что здесь происходит. Чтобы сделать проблему еще более странной, я попробовал это на другом компьютере, и код работает нормально. Поэтому в Visual Studio или моем проекте на этом одном компьютере должно быть что-то не так.

Я пробовал удалить папку debug и obj, suo и все такое. Я удалил ссылку на System.Management.Automation и повторно добавил ее, даже перезагружая промежуточный. Я в недоумении, я понятия не имею, почему это происходит или что еще я могу сделать, чтобы понять это.

Примечание: Я могу запускать команды Appx в Powershell ISE в порядке, поэтому на компьютере нет проблем. Проблема заключается только в вызове этой команды через dll System.Management.Automation.

Любая помощь была бы принята с благодарностью.

+0

Вы можете попробовать запустить его в качестве администратора? это иногда может быть проблемой – HAL9256

+0

Это предложение. Я пробовал это. К сожалению, работа с администратором не имела никакого значения. –

ответ

0

ОК, похоже, эта проблема была вызвана установкой неверной версии System.Management.Automation как пакета nuget через диспетчер пакетов. Я удалил это, а затем добавил ссылку на последнюю версию DLL вручную, прежде чем я начал получать проблему, описанную выше.

Но удаление пакета nuget явно не срабатывало должным образом, поскольку проект продолжал ссылаться на эту версию, и ничто из того, что я пробовал, не могло заставить его использовать новый.

Чтобы решить эту проблему, я создал новый проект, добавил исходные файлы, добавил ссылку непосредственно на новую версию System.Management.Automation и произошла ошибка.

Я могу только предположить, что установка и удаление неправильной версии с менеджером пакетов испортили первый проект.

Смежные вопросы