2009-02-06 10 views
7

Czy możliwe jest uruchomienie PowerShell 1.0 (lub 2.0 CTP) wspieranego przez środowisko wykonawcze 3.5 zamiast wersji 2.0?Używanie PowerShell z środowiskiem wykonawczym .NET 3.5/bibliotekami

Budujemy .NET 3.5 rozwiązanie, a ja nadal lubią używać PowerShell jako nasz silnik skryptowy dla zaplanowanych zadań itp

nie muszę LINQ składni ani nic, po prostu 3.5 biblioteki i środowisko wykonawcze.

FOLLOWUP: dziękuję za odpowiedź dotyczącą dynamicznego ładowania złożeń. Ale pozwól mi wyjaśnić moje pytanie: czy istnieje sposób uruchamiania programu PowerShell, aby domyślnie działały biblioteki 3.5? Więc jeśli na przykład wpisam New-Object System.Xml.XmlDocument, to domyślnie otrzymuję wersję 3.5?

Semi związanych pytanie: jeśli zrobić trzeba dynamicznie ładować, powiedzmy, bibliotekę System.Xml od 3,5, to będzie nakładka istniejące definicje symboli tak, że obok czas wpisuję New-Object System.Xml.XmlDocument, to będzie załadować wersję 3.5?

Odpowiedz

4

tak długo, jak uzyskać nazwę pełną prawo, ja nie rozumiem, dlaczego to nie działa:

[System.Reflection.Assembly]::Load("System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") 

ja tylko używane Linq jako że był pierwszym, który przyjdzie do głowy. W tym momencie ddl jest ładowany i możesz tworzyć/używać obiektów z tego.

+0

Zakładam jednak, że jeśli dynamicznie załadować NET 3.5 montaż (w tym te, które mogę napisać), a następnie utworzyć obiekt .NET (słownie , System.Xml.XmlDocument) i przekazać go do metody w moim zespole, będę przekazywanie obiektu 2.0 do obiektu 3.5. Mam rację? –

+0

Aby przekazać dokument 3.5 XmlDocument, muszę zaimportować bibliotekę System.Xml .NET 3.5 w taki sam sposób, w jaki demonstrowałeś wykonywanie biblioteki System.Xml.Linq. –

+0

Nie jestem profesjonalistą, ale zgadzam się, że twoje założenia powyżej są poprawne. –

3

PowerShell został zbudowany w stosunku do wersji 2.0, więc nie masz żadnych opcji, ale musisz mieć co najmniej 2.0. Ale jak mówi James, możesz załadować funkcje 3.0 i 3.5, ładując odpowiedni zespół. LINQ jest dobrym przykładem z wersji 3.5, ale możesz także zrobić WPF (3.0) z PowerShell. Należy jednak pamiętać o STA i MTA dla WPF, ponieważ tylko PowerShell v2 ma pełne wsparcie dla WPF (pełna obsługa powinowactwa wątku).

+0

Co z moim pytaniem o nakładki? Czy mogę zastąpić (lub przynajmniej) ukryć zestaw 2.0, ładując równoważny zestaw 3.5, aby zmienić domyślną implementację pliku System.Xml.XmlDocument (na przykład)? –

+0

Spróbuję znaleźć sposób, aby to ustalić na pewno. Przepraszam, tęskniłem za tą częścią. Możesz odznaczać jako odpowiedź. –

3

3.5 jest faktycznie ADD-ON dla wersji 2.0. Oznacza to, że nie ma żadnych superwytrzymanych klas w 3.5; to nie jest zamiennik. Środowisko CLR (ang. Common language runtime) wciąż jest w wersji 2.0.

8

Jeśli masz 3.5 zainstalowany w systemie, to dostaniesz, gdy uruchomisz PowerShell.

PowerShell wymaga tylko "2.0", ale wersje 3.0 i 3.5 są zgodne i automatycznie instalowane. W PowerShell V2, rzeczywiście chcemy sprawdzić, jaka wersja posiadasz i "rozświetlać" niektóre funkcje (np. PowerShell_ISE i Out-GridView są dostępne, gdy masz 3,51).

Eksperyment! Cieszyć się! Angażować!

Jeffrey Snover [MSFT] Windows Management Partner Architekt

Powiązane problemy