Zaczynam przyglądać się modelowi PowerShell i tworzeniu przystawek. Pierwszą rzeczą, którą zauważyłem, jest odwołanie się do System.management.automation.dll. Jednak w programie Visual Studio karta .NET nie ma tego zestawu i nie można jej przeglądać
C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll
aby utworzyć odniesienie do pliku.
Czy jestem zmuszony do ręcznego kopiowania pliku, aby ułatwić sobie do niego dostęp ?
visual-studio
powershell
icelava
źródło
źródło
Odpowiedzi:
System.Management.Automation na NugetSystem.Management.Automation.dll w NuGet , nowszy pakiet z 2015 roku, nie jest zastrzeżony jak poprzedni!
Pakiety zespołu Microsoft PowerShell w NuGet
Aktualizacja: pakiet jest teraz własnością zespołu programu PowerShell. Huzzah!
źródło
Kopia System.Management.Automation.dll jest instalowana podczas instalacji zestawu Windows SDK (w każdym razie jego odpowiedniej, najnowszej wersji). Powinien znajdować się w C: \ Program Files \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ v1.0 \
źródło
Jeśli nie chcesz instalować zestawu Windows SDK, możesz pobrać bibliotekę dll, uruchamiając następujące polecenie w programie PowerShell:
źródło
Nie udało mi się poprawnie zainstalować SDK (niektóre pliki wydawały się niepodpisane, coś w tym rodzaju). Znalazłem tutaj inne rozwiązanie i wydaje mi się, że działa dobrze. W ogóle nie wymaga instalacji nowych plików. Zasadniczo to, co robisz, to:
Edytuj plik .csproj w edytorze tekstu i dodaj:
<Reference Include="System.Management.Automation" />
do odpowiedniej sekcji.
Mam nadzieję że to pomoże.
źródło
jeśli jest to wersja 64-bitowa - C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell ** 3.0 **
a wersja może być inna
źródło
Użyłem menu VS Project Reference i przejrzałem do: C: \ windows \ assembly \ GAC_MSIL \ System.Management.Automation i dodałem odniesienie do biblioteki dll i Runspaces dll.
Nie musiałem hakować pliku .csprj i dodawać wspomnianej powyżej linii odniesienia. Nie mam zainstalowanego zestawu Windows SDK.
Zrobiłem wspomnianą powyżej kopię Powershell: Copy ([PSObject] .Assembly.Location) C: \
Mój test z poleceniem Get-Process Powershell zadziałał. Użyłem przykładów z Powershell dla programistów w rozdziale 5.
źródło
Zestaw pochodzący z Powershell SDK (C: \ Program Files \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ v1.0) nie zawiera określonych typów programu Powershell 2.
Ręczna edycja pliku csproj rozwiązała mój problem.
źródło
Możesz również użyć nuget: https://www.nuget.org/packages/System.Management.Automation/ To może być lepsza opcja.
źródło