0

我想在我的 Windows Phone 8 C# 应用程序中运行用 Python 编写的 Skeinforge 切片器程序。我已经确定我可能应该使用 IronPython 来执行此操作,我已经确定我可以在安装 IronPython 时获得的 ipy.exe 终端内运行 Skeinforge。不过,我的问题是我正在努力弄清楚如何在 Windows Phone 8 中使用 IronPython 托管和运行 Python 脚本。我还已经设法在桌面 Windows 窗体应用程序中运行了一个简单的 hello world 脚本,该应用程序传输应用程序控制台使用以下代码输出到调试控制台:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;

using IronPython.Hosting;
using Microsoft.Scripting.Hosting;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            DebugWriter debugW = new DebugWriter();
            Console.SetOut(debugW);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            TextWriter tw = new StreamWriter("Test.py");
            tw.Write(scriptBox.Text);
            tw.Close();

            try
            {
                var ipy = Python.CreateRuntime();
                dynamic test = ipy.UseFile("Test.py");
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

这是 DebugWriter:

class DebugWriter : TextWriter
{
    private StringBuilder content = new StringBuilder();

    public DebugWriter()
    {
        Debug.WriteLine("Writing console to debug");
    }

    public override void Write(char value)
    {
        base.Write(value);
        if (value == '\n')
        {
            Debug.WriteLine(content.ToString());
            content = new StringBuilder();
        }
        else
        {
            content.Append(value);
        }
    }

    public override Encoding Encoding
    {
        get { return System.Text.Encoding.UTF8; }
    }
}

我什至不知道如何将 IronPython 库添加到我的 Windows Phone 8 应用程序中,因为标准库不会导入。我虽然尝试使用主源代码编译显然现已失效的 Windows Phone 7 库,并且可以导入这些库,但是当我尝试运行我的 hello world 脚本时,调试终端上绝对没有响应。

你们中的任何人都知道如何在 Windows Phone 8 中进行此操作,如果您知道如何在 Windows 8/Metro/RT 中执行此操作,那么这也可能适用于 WP8。

更新:我再次查看了调试输出,在尝试使用 WP7 库运行 hello world 脚本时似乎遇到了这个错误:

A first chance exception of type 'System.NotImplementedException' occurred in Microsoft.Scripting.DLL
Error: The method or operation is not implemented.
4

1 回答 1

0

我设法让 Skeinforge 在 IPY 的修改版本上运行。您可以在此处获取我的应用程序的源代码:http: //skeinforgewp8.codeplex.com/

于 2013-06-03T15:13:05.623 回答