Я создаю приложение на C#, пока все, что он делает, вызывает команду« get-process »powershell.Не удалось загрузить файл или сборку «System.Management.Automation, Version = 3.0.0.0
я редактировал файл csproj включить System.Management.Automation
<ItemGroup>
<Reference Include="System.Management.Automation" />
При запуске локально (Windows 8.1 работает Powershell версии 4) он работает.
При запуске на удаленном компьютере Windows 7 с Powershell версии 2, программа генерирует исключение,
System.IO.FileNotFoundException: Could not load file or assembly 'System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
не может найти System.Management.Automation Version = 3.0.0.0. Мне повезло, что это будет работать над любой версией Powershell и ссылаться на местную версию.
Командлет Get-Process работает на PS V2.
Можно ли остановить форсирование версии 3 системы автоматизации управления? Я читал, что вы можете сделать это в app.config, но нет ссылки на автоматизацию управления системой.
Thankyou для вашего времени.
---------------------------------------------- -------- РЕДАКТИРОВАТЬ ----------------------------------------- ------
Я смог выполнить эту работу, но установил платформу Target на .Net 3.5, однако теперь это вынуждает PS V2. В любом случае, я могу настроить таргетинг на локальную версию dll системного управления и заставить клиентов использовать эту версию?
вы сможете просто обновить Powershell на 7 коробке с Windows? '> choco install Powershell' с [Chocolatey] (https://chocolatey.org/) –
Ну, вам нужно настроить таргетинг на .NET 3.5, если вы хотите, чтобы версия PowerShell 2 могла загрузить DLL. –
Это кажется немного дерьмом в том, что, нацеливая NET 3.5, я заставляю каждого клиента только PowerShell 2 и PowerShell 2. Неужели есть другой способ? – Matt416