2014-12-16 4 views
6

Я создаю приложение на 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 системного управления и заставить клиентов использовать эту версию?

+0

вы сможете просто обновить Powershell на 7 коробке с Windows? '> choco install Powershell' с [Chocolatey] (https://chocolatey.org/) –

+0

Ну, вам нужно настроить таргетинг на .NET 3.5, если вы хотите, чтобы версия PowerShell 2 могла загрузить DLL. –

+0

Это кажется немного дерьмом в том, что, нацеливая NET 3.5, я заставляю каждого клиента только PowerShell 2 и PowerShell 2. Неужели есть другой способ? – Matt416

ответ

7

Powershell 2.0 не включает System.Management.Automation V3. System.Management.Automation предоставляется базой данных Windows Management Framework, а не .Net. Если у вас есть Powershell 2.0, у вас нет Automation 3.0. Для получения списка, какие файлы/сборки предусмотрены в Powershell 2.0 посетите следующий сайт:

Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0)

Обновление до Powershell 4.0 путем установки WMF 4,0 от Microsoft на целевой машине.

http://www.microsoft.com/en-us/download/details.aspx?id=40855

+0

Привет, извините, меня не было на выходные, я отметил как ответ. Есть ли в любом случае моя программа может работать как с версией PowerShell 3+, так и с версией 2? похоже невозможно. – Matt416

+1

Одна из двух вещей должна произойти. Перепишите программу для сборки 2.0 или обновите сборку, чтобы ваша программа работала изначально. Это единственные два варианта, о которых я знаю: - / – Colyn1337

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