【问题标题】:Using PowerShell with .NET 3.5 runtime/libraries将 PowerShell 与 .NET 3.5 运行时/库一起使用
【发布时间】:2010-10-06 00:25:31
【问题描述】:

是否可以运行由 3.5 运行时而不是 2.0 支持的 PowerShell 1.0(或 2.0 CTP)?

我们正在构建一个 .NET 3.5 解决方案,我仍然希望使用 PowerShell 作为我们的脚本引擎来执行计划任务等。

我不需要 LINQ 语法或任何东西,只需要 3.5 库和运行时。

FOLLOWUP:感谢您关于动态加载程序集的回复。但是让我澄清一下我的问题:有什么方法可以运行 PowerShell 以便默认运行 3.5 库?这样如果我输入New-Object System.Xml.XmlDocument,例如,我实际上默认获得的是3.5版本?

半相关问题:如果我确实必须动态加载,例如,3.5 中的 System.Xml 库,它会覆盖现有的符号定义,使得下次我输入New-Object System.Xml.XmlDocument时,它加载3.5版本吗?

【问题讨论】:

    标签: .net .net-3.5 powershell powershell-2.0 powershell-1.0


    【解决方案1】:

    如果您的系统上安装了 3.5,那么当您运行 PowerShell 时,您将获得该版本。

    PowerShell 仅“需要”2.0,但 3.0 和 3.5 兼容并在安装时自动转发。在 PowerShell V2 中,我们实际上会查看您拥有的版本并“点亮”某些功能(例如 PowerShell_ISE 和 Out-GridView 在您拥有 3.51 时可用)。

    实验!享受!参与!

    杰弗里·斯诺弗 [MSFT] Windows 管理合作伙伴架构师

    【讨论】:

      【解决方案2】:

      只要你的完全限定名正确,我不明白为什么这不起作用:

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

      我只使用了 Linq,因为这是我想到的第一个。此时,ddl 已加载,您可以从中创建/使用对象。

      【讨论】:

      • 不过,我假设如果我动态加载 .NET 3.5 程序集(包括我可能编写的任何程序集),然后创建一个 .NET 对象(例如,System.Xml.XmlDocument)并将它传递给我的程序集中的一个方法,我会将一个 2.0 对象传递给一个 3.5 对象。我说的对吗?
      • 所以要传递 3.5 XmlDocument,我实际上需要像您演示的 System.Xml.Linq 库那样导入 .NET 3.5 System.Xml 库。
      • 我不是亲开发者,但我倾向于同意您的上述假设是正确的。
      【解决方案3】:

      PowerShell 是针对 2.0 构建的,因此您别无选择,只能至少拥有 2.0。但就像 James 所说,您可以通过加载适当的程序集来加载 3.0 和 3.5 功能。 LINQ 是 3.5 的一个很好的例子,但您也可以从 PowerShell 执行 WPF (3.0)。但请注意 WPF 的 STA 和 MTA,因为只有 PowerShell v2 完全支持 WPF(完全支持线程关联)。

      【讨论】:

      • 关于叠加层的问题呢?我可以通过加载等效的 3.5 程序集来替换(或至少)隐藏 2.0 程序集,从而改变 System.Xml.XmlDocument 的默认实现(例如)吗?
      • 我会尝试找到一种方法来确定这一点。对不起,我错过了那部分。随意取消标记为答案。
      【解决方案4】:

      3.5 实际上是 2.0 的附加组件。也就是说,3.5中没有被取代的类;它不是替代品。 CLR(公共语言运行时)仍然是 v2.0。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-02
        • 2015-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-16
        相关资源
        最近更新 更多