【问题标题】:Importing COM PIA when hosting PowerShell托管 PowerShell 时导入 COM PIA
【发布时间】:2011-02-10 11:46:25
【问题描述】:

我在 GAC 中安装了一个 COM 组件及其 PIA。在PowerShell中,我可以做到

$a = New-Object -com MySvr.ProgId
$x = $a.Method([MySvrLib.MyEnum]::enumValue)

它理解 COM 枚举类型。

但是当我使用 RunSpace 在我的应用程序中托管 PowerShell 时,请通过 RunSpace.SessionStateProxy.SetVariable 提供我的组件实例并调用此代码:

$x = $a.Method([MySvrLib.MyEnum]::enumValue)

我得到“无法找到类型 [MySvrLib.MyEnum]:确保已加载包含此类型的程序集。”

有没有办法将我的组件的类型定义加载到托管的 PowerShell 实例中?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    在您的RunspaceConfiguration(配置新运行空间的选项)中,有一个Assemblies 属性,您可以在其中添加指向您的PIA 的AssemblyConfigurationEntry 对象。注意:AssemblyConfigurationEntry 的构造函数需要像 Microsoft.Office.Interop.Excel, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c 这样的程序集限定名称。

    【讨论】:

    • 谢谢。创建 RunSpace 后,我尝试了 rs.RunspaceConfiguration.Assemblies.Append(new AssemblyConfigurationEntry("MySvr", @"C:\Path\To\MySvrPIA.dll")),我得到“无法加载文件或程序集 'MySvr ' 或其依赖项之一。该模块应包含程序集清单。打开 RunSpace 时。我做错了什么?
    • 对于 GAC 的 PIA 的名称,您必须提供程序集限定名称,例如类似Microsoft.Office.Interop.Excel, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c
    猜你喜欢
    • 1970-01-01
    • 2010-12-31
    • 2020-09-23
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 2011-03-08
    • 2012-09-23
    • 2012-02-24
    相关资源
    最近更新 更多