Использование PowerShell с .NET 3.5 runtime / library - PullRequest
7 голосов
/ 06 февраля 2009

Можно ли запустить PowerShell 1.0 (или 2.0 CTP) с поддержкой среды выполнения 3.5 вместо 2.0?

Мы создаем решение .NET 3.5, и я все еще хотел бы использовать PowerShell в качестве механизма сценариев для запланированных задач и т. Д.

Мне не нужен синтаксис LINQ или что-либо еще, только библиотеки 3.5 и среда выполнения.

FOLLOWUP: спасибо за ответ о динамической загрузке сборок. Но позвольте мне прояснить мой вопрос: есть ли способ запустить PowerShell, чтобы библиотеки 3.5 запускались по умолчанию? Так что, если я, например, введу New-Object System.Xml.XmlDocument, я получу версию 3.5 по умолчанию?

Полусвязанный вопрос: если мне do придется динамически загружать, скажем, библиотеку System.Xml из 3.5, она будет перекрывать существующие определения символов, так что следующий раз, когда я наберу New-Object System.Xml.XmlDocument, он будет загружать версию 3.5?

Ответы [ 4 ]

8 голосов
/ 22 февраля 2009

Если в вашей системе установлено 3.5, это то, что вы получите при запуске PowerShell.

PowerShell только «требует» 2.0, но 3.0 и 3.5 совместимы и автоматически устанавливаются. В PowerShell V2 мы действительно смотрим, какая у вас версия, и «подсвечиваем» определенные функции (например, PowerShell_ISE и Out-GridView доступны, когда у вас 3,51).

Эксперимент! Наслаждайтесь! Engage!

Джеффри Сновер [MSFT] Архитектор Windows Management Partner

4 голосов
/ 06 февраля 2009

Пока вы правильно указали свое полное имя, я не понимаю, почему это не сработает:

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

Я использовал только Linq, так как это было первое, что пришло на ум. На этом этапе ddl загружен, и вы можете создавать / использовать объекты из этого.

3 голосов
/ 09 февраля 2009

3.5 фактически является ДОБАВЛЕНИЕМ для 2.0. То есть, в 3.5 нет замененных классов; это не замена. CLR (общеязыковая среда выполнения) по-прежнему v2.0.

3 голосов
/ 06 февраля 2009

PowerShell был построен против 2.0, поэтому у вас нет никаких вариантов, кроме как наличие 2.0 по крайней мере. Но, как говорит Джеймс, вы можете загрузить функции 3.0 и 3.5, загрузив соответствующую сборку. LINQ является хорошим примером из 3.5, но вы также можете сделать WPF (3.0) из PowerShell. Обратите внимание на STA и MTA для WPF, так как только PowerShell v2 полностью поддерживает WPF (полная поддержка соответствия потоков).

...