2014-12-09 2 views
0

Система: Windows 7 Professional 64 бит, PowerShell v 2.0, без Visual Studio (не могут быть установлены и другие тоже)Отсутствует автоматизация из пространства имен «System.Management». Отсутствует ссылка на сборку

Пытается запустить PowerShell с C#. Это фрагмент кода:

using System; 
using System.Management.Automation; 

class Hello { 
    static void Main(string[] args) {   
     PowerShell ps = PowerShell.Create(); 
     ps.AddCommand("Get-Process"); 
     Console.WriteLine("Process     Id"); 
     Console.WriteLine("----------------------------"); 
     foreach (PSObject result in ps.Invoke()) { 
      Console.WriteLine(
      "{0,-24}{1}", 
      result.Members["ProcessName"].Value, 
      result.Members["Id"].Value); 
      } 
     }  
    } 

Ошибка:

e:\foo.cs(2,25): error CS0234: The type or namespace name 'Automation' does not exist in the namespace 'System.Management' (are you missing an assembly reference?)

Поскольку ни Visual Studio не существует, я бегу код в сыром образом. Из-за ошибки я загрузил dll из http://www.dll-found.com/system.management.automation.dll_download.html и поместил его в соответствии с инструкцией. После перезагрузки машины успеха не было.

Во-первых, я хочу задать общий вопрос. Как установить отсутствующий сборщик или файл dll (только), потому что для некоторых вам может потребоваться установить всю Windows или PowerShell SDK или .NET Framework.

EDIT
У меня есть место загруженный файл DLL в C: \ Windows \ SysWOW64, C: \ Windows \ system32, C: \ Program Files \ Reference Сборки \ Microsoft \ Framework \ v3.5 и C: \ Program Files \ Reference Assemblies \ Microsoft \ Framework \ v3.0.

Я компиляция с помощью: C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ csc.exe/цели: ех /out:E:\foo.exe E: \ foo.cs

+0

вы добавили ссылочный System.Management.Automation.dll –

+0

Как скомпилировать файл? Если вы запускаете 'csc.exe' напрямую, вы должны указать все ссылки в своей командной строке, а не просто« копировать »DLL-файлы в тот же каталог. –

+0

Добавлена ​​информация. – msinfo

ответ

2

вы должны использовать /reference параметр командной строки для csc.exe, описанный в MSDN:

C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe /reference:system.management.automation.dll /target:exe /out:E:\foo.exe /E:\foo.cs 
+0

Прежде чем я приму свой ответ (он сработал), вы можете прокомментировать две вещи. Полезно ли загружать dll/файлы с http://www.dll-found.com? Какие пути обычно ищут для ссылочных DLL-файлов, поэтому я могу помещать файлы DLL в эту папку. Или я могу вставить любой диск или папку? – msinfo

+1

Это не так хорошо для загрузки файлов оттуда, потому что вам могут понадобиться разные версии, архитектуры процессоров и т. Д. Для набора файлов, а не только для одного файла. Вам нужны последовательные версии файлов. Только если вы не знаете, где эти dll могут быть, вы можете скачать их с dll-found.com, но вы должны знать, что могут быть проблемы в их unmatching публичных интерфейсах. –

+0

Спасибо kpa6uk за информацию. Небольшой поиск Google показал ответ на второе. – msinfo

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