Я начал новый. 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/