Как ссылаться на System.Management.Automation в. NET Framework 4.7.2? - PullRequest
0 голосов
/ 03 апреля 2020

Я начал новый. NET Библиотечный проект Framework 4.7.2. Мне нужно автоматизировать сценарии PowerShell, но на вкладке «Framework» в справочнике по добавлению интерфейса Visual Studio не был указан System.Management.Automation в качестве опции. Поэтому я добавил ссылку на этот пакет Nuget:

https://www.nuget.org/packages/System.Management.Automation/7.0.0

Затем с этим кодом:

PowerShell ps = PowerShell.Create();
ps.AddScript(@"C:\ps\function.ps1");
ps.AddArgument(1);
ps.AddArgument(2);
Collection<PSObject> results = ps.Invoke<PSObject>();

Я получаю эту ошибку о версии DLL, на которые я непосредственно не ссылался:

Сборка 'System.Management.Automation' с идентификацией 'System.Management.Automation, Версия = 7.0.0.0, Culture = нейтральная, PublicKeyToken = 31bf3856ad364e35 'использует' System.Linq.Expressions, версия = 4.2.2.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a ', которая имеет более высокую версию, чем указанная сборка' System.Linq.Expressions 'с идентификатором' System.Linq.Expressions, версия = 4.1 .2.0, Культура = нейтральный, PublicKeyToken = b03f5f7f11d50a3a '

Я не уверен, как решить эту проблему, и я думаю, что, возможно, я неправильно добавил ссылку на библиотеку автоматизации PowerShell. Какой правильный способ сделать это в настоящее время?

Прежде чем вы укажете мне старый ответ, я нашел похожий вопрос по этому поводу, который указывает на другой пакет Nuget, теперь помеченный как "устаревший" и не выглядит официально тем не мение. Это заставляет меня нервничать.

https://www.nuget.org/packages/System.Management.Automation.dll/

1 Ответ

0 голосов
/ 04 апреля 2020

System.Management.Automation v7.0.0 работает только с. NET Core. Если ваш проект требует. NET Framework, вы должны использовать System.Management.Automation v5.1.x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...