Посилання system.management.automation.dll у Visual Studio


131

Я починаю вивчати модель PowerShell та оснащення. Перше, що я помічаю, це посилання на System.management.automation.dll. Однак у Visual Studio, на вкладці .NET немає такої збірки, і не можна переглядати її

C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

зробити посилання на основі файлів.

Чи змушений я скопіювати файл вручну, щоб зробити просту довідку ?


Чи можете ви розглянути можливість прийняття відповіді на цю відповідь? Підхід до пакетів NuGet видається найбільш простим та надійним.
julealgon

Відповіді:


165

System.Management.Automation on Nuget

System.Management.Automation.dll на NuGet , новіший пакет з 2015 року, не внесений до списку попереднього!

Командна програма Microsoft PowerShell в NuGet

Оновлення: пакет тепер належить команді PowerShell. Huzzah!


2
Це заслуговує на більше
foobarcode

5
Я хотів би, щоб Microsoft взяла право власності на цей Nuget, оскільки вони настільки сильно відкриті.
skfd

@skfd Microsoft в значній мірі володіє Nuget. Люди, які стоять за ним, використовують електронні листи microsoft.com, а сам NuGet є частиною Microsofts .NET Foundation ( dotnetfoundation.org )
Майкл Бісб'єрг

1
@MichaelBisbjerg, я думаю, що він здебільшого мав на увазі саме цей специфічний пакет NuGet. Якби це було у власності Microsoft, тоді (в ідеальному світі) вони відповідали б за постійне оновлення, випуск нових пакетів тощо.
Бен Рендалл,

востаннє оновлено 29.03.2013 "Власник видав цей список у цей список. Це може означати, що пакет застарілий або його більше не слід використовувати."
juFo

97

Копія System.Management.Automation.dll встановлюється при встановленні пакета SDK для Windows (у будь-якому разі підходить, остання його версія). Він повинен бути в C: \ Program Files \ Reference Assembly \ Microsoft \ WindowsPowerShell \ v1.0 \


2
Я встановив SDK на 2 різних 64-розрядних машинах (із труднощами) і знайшов dll версії 6.2.8229.0, 4.66MB лише на 1, і лише в c: \ програмних файлах (x86) \ посиланнях посилань \ microsoft \ windowspowershell \ v1.0. Я настійно рекомендую редагувати .csproj файл або перевіряти правильну DLL для контролю джерела та посилання на нього. Установка SDK просто надто негнучка.
Джеймс Маклаклан

@ ashes999 PowerShell 2.0 фактично працює на 1.0 DLL.
kravits88

3
2014.07.11 на x64 його в C: \ Файли програми (x86) \ Довідкові збори \ Microsoft \ WindowsPowerShell \ 3.0 \ System.Management.Automation.dll
Крістофер Г. Льюїс

Я не знаю про SDK, але я знаю, що WMF 3.0 не встановлює його в C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0. Я хотів встановити PowerShell 3.0 на Windows 7 SP1 з версією 1.0, розміщеною в C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 1.0, і я використовував Windows6.1-KB2506143-x64.msi від microsoft .com / en-us / download / details.aspx? id = 34595, і він працює успішно. Однак він створив * .dll лише у C: \ Windows \ Microsoft.NET \ Assembly \ GAC_MSIL \ System.Management.Automation / v4.0_3.0.0.0__31bf3856ad364e35.
Олександр Самойлов

Це правильний * .dll, оскільки команда "powershell.exe -version 3.0" перестає працювати, якщо я переміщу * .dll. Розмір. Я можу створити папку C: \ Program Files (x86) \ Контрольні збори \ Microsoft \ WindowsPowerShell \ 3.0 на машині Windows 7 SP1 і помістити туди * .dll з C: \ Windows \ Microsoft.NET \ Assembly \ GAC_MSIL \ System. Management.Automation / v4.0_3.0.0.0__31bf3856ad364e35, але питання полягає в тому, як її правильно встановити.
Олександр Самойлов

85

Якщо ви не хочете інсталювати SDK для Windows, ви можете отримати dll, виконавши таку команду в powershell:

Copy ([PSObject].Assembly.Location) C:\

8
Тепер це геніально!
8DH

2
Дуже солодкий. Не подумав би про це.
Маріус

Дякую за це Пакет NuGet не працюватиме для мене в абсолютно новому консольному додатку .NET 4.5.2. Він "встановив" пакет, але він відмовився додавати посилання. Нарешті я перестав битися з NuGet і використав вашу відповідь, щоб додати посилання вручну. Дякую!
Lews Therin

77

Я не міг змусити SDK встановитись належним чином (деякі файли здалися неподписаними, щось подібне). Я знайшов інше рішення тут , і що , здається, працює добре для мене. Це зовсім не вимагає встановлення нових файлів. В основному, ви робите:

Відредагуйте .csproj файл у текстовому редакторі та додайте:

<Reference Include="System.Management.Automation" />

до відповідного розділу.

Сподіваюся, це допомагає.


1
Мені здається дивним, що ми повинні робити це вручну (редагуючи файл .csproj), але це працювало для мене.
kd7iwp

Редагування файлу проекту просто змушує його завантажувати версію з GAC (це версія V2) замість файлової системи (що є версією V1)
Дерек Евермор

Це може призвести до проблем, коли додаток розгорнуто на сервері, оскільки збірка там може бути не знайдена.
марш

9

якщо це 64-бітний їх - C: \ Program Files (x86) \ Контрольні збори \ Microsoft \ WindowsPowerShell ** 3.0 **

і версія може бути різною


2

Я використав меню посилання на проект VS та переглянув: C: \ windows \ Assembly \ GAC_MSIL \ System.Management.Automation та додав посилання на dll та dll Runspaces.

Мені не потрібно було зламати .csprj файл і додавати згадуваний рядок. У мене не встановлено пакет SDK для Windows.

Я зробив згадану вище копію Powershell: Copy ([PSObject] .Assembly.Location) C: \

Тоді мій тест із командою Get-Process Powershell працював. Я використовував приклади з Powershell для розробників Глава 5.


1

Збірка, що постачається з SDK Powershell (C: \ Program Files \ Reference Assembly \ Microsoft \ WindowsPowerShell \ v1.0), не постачається з Powershell 2 типовими типами.

Редагування файлу csproj вручну вирішило мою проблему.


0

Ви також можете використовувати nuget: https://www.nuget.org/packages/System.Management.Automation/ Це, можливо, кращий варіант.


У мене виникла проблема з тим, що на правильну DLL було вказано в проекті, але при повторній перезавантаженні помилка в тому, що пакет автоматизації не знайдено. За допомогою Nuget це виправлено. Переконайтесь, що під час запуску Install-Package виберіть правильний проект "За замовчуванням" на консолі диспетчера пакунків.
користувач3523091
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.