试图让 VB.NET 调用 IronPython 来增加 VB 变量

trying to get VB.NET to call IronPython to increment a VB variable

无法让 VB 调用 IronPython 到 return 递增整数。 值 returned 与传递给 IronPython 的值相同。

我希望我的 VB.NET windows 表单应用程序将变量 123 传递给 IronPython,让 IronPython 将变量加 10,然后让 VB 取回它。 但是,它仍然返回 123.

Imports System
Imports System.IO

Imports Microsoft.Scripting
Imports Microsoft.Scripting.Hosting
Imports IronPython.Hosting


Public Class Form1
     Private Sub Button_GO_Click(sender As Object, e As EventArgs) Handles Button_GO.Click
         ' HELLO WORLD...
         ' bring up an IronPython runtime 
        dim engine = Python.CreateEngine()
        dim  scope = engine.CreateScope()  

        ' create a source tree from code '
        dim source =  engine.CreateScriptSourceFromString("print 'hello from python'")
        ' run the script in the IronPython runtime'
        source.Execute(scope)

        ' MODIFY VARIABLE: BUG:  returns 1 instead of 11'
        engine = Python.CreateEngine()
        scope = engine.CreateScope()  

        ' create a Python variable "i" with the value 1'            
        scope.SetVariable( "i", 1 )

        ' this script will simply add 1 to it '
        source = engine.CreateScriptSourceFromString( "i += 10" )

        ' pull the value back out of IronPython and display it:'
        dim response = scope.GetVariable("i")
        debug.print(     response ) 
    End Sub
End Class

我修好了。看....

Imports System
Imports System.IO

Imports Microsoft.Scripting
Imports Microsoft.Scripting.Hosting
Imports IronPython.Hosting


Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ' VB SENDS A VARIABLE TO IRONPYTHON, WHICH INCS AND RETURNS IT......             http://www.chrisumbel.com/article/scripting_ironpython_dlr
       '/* bring up an IronPython runtime */  
        dim engine = Python.CreateEngine()
        dim  scope = engine.CreateScope()  




        ' create a Python variable "i" with the value 1         
        scope.SetVariable( "i", 123 )



        ' this script will simply add 1 to it 
        dim source = engine.CreateScriptSourceFromString( "i += 10" )

        '/* run the script in the IronPython runtime */  
        source.Execute(scope)


       '     /* pull the value back out of IronPython and display it */
            Console.WriteLine(scope.GetVariable("i").ToString())

End Sub

结束Class