【问题标题】:How do you load an assembly in boo如何在 boo 中加载程序集
【发布时间】:2013-08-20 16:57:15
【问题描述】:

我正在尝试在我的 boo 代码中使用 .NET 程序集 Microsoft.VisualBasic

看起来像这样:

import System

import Regex from System.Text.RegularExpressions

import Interaction from Microsoft.VisualBasic

import Microsoft.VisualBasic

## import Reflection.Assembly



## path="""C:\Windows\winsxs\msil_microsoft.visualbasic_b03f5f7f11d50a3a_6.1.7100.0_none_29f6b89369881fe4\Microsoft.VisualBasic.dll"""

## f=Reflection.Assembly.Load(Reflection.Assembly.LoadFile(path).ToString())

## Interaction.Beep()

for i in Regex.Matches("def jam(this)","\\w+"):

    print i

arr=array(range(10))

print List(arr)

Array.Reverse(arr)

print List(arr)

使用import Microsoft.VisualBasic 时出现错误:

test.boo(9,1): BCE0005: Unknown identifier: 'Interaction'.

使用import Interaction from Microsoft.VisualBasic时:

test.boo(4,8): BCE0167: Namespace 'Interaction' not found in assembly 'Microsoft.VisualBasic'

当我尝试以这种方式加载 dll 时它仍然不起作用:

Reflection.Assembly.Load(Reflection.Assembly.LoadFile(path))

问题是上述方法在 Powershell 中有效:

PS C:\mine> [reflection.assembly]::loadfile("C:\Windows\winsxs\msil_microsoft.visualbasic_b03f5f7f11d50a3a_6.1.7100.0_none_29f6b89369881fe4\Microsoft.VisualBasic.dll")

GAC    Version        Location

---    -------        --------

True   v2.0.50727     C:\Windows\assembly\GAC_MSIL\Microsoft.VisualBasic\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualBasic.dll

PS C:\mine> [microsoft.visualbasic.interaction]::beep()

我也可以使用LoadWithPartialName,即[Reflection.Assembly]::loadwithPartialName('Microsoft.VisualBasic'),但它已被弃用。

我该如何进行这项工作?

【问题讨论】:

    标签: .net import .net-assembly boo


    【解决方案1】:

    我终于找到了解决方案。原来问题是我编译它的方式。我使用的是booc.exe test.boo,而不是添加对Microsoft.VisualBasic 的引用。您甚至不需要使用Reflection.Assembly 加载它,您只需导入它,使用它并使用booc.exe test.boo -r:Microsoft.VisualBasic.dll 进行编译。提供dll 的完整路径也可以。我猜Powershell 和boo 有不同的方式访问.NET 程序集。

    【讨论】:

      猜你喜欢
      • 2012-10-07
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多