Как вы загружаете сборку в бу

Я пытаюсь использовать .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') но это устарело.

Как мне сделать эту работу?

1 ответ

Решение

Наконец-то я нашел решение. Оказывается, проблема была в том, как я его компилировал. Я использовал booc.exe test.booвместо добавления ссылки на Microsoft.VisualBasic, Вам даже не нужно загружать его с помощью Reflection.Assembly, вы просто импортируете его, используете его и компилируете с booc.exe test.boo -r:Microsoft.VisualBasic.dll, Предоставление полного пути к dll тоже будет работать. Похоже Powershell а также boo есть разные способы доступа .NET сборок.

Другие вопросы по тегам