System.Exception {“第1行的语法错误:文件开头的非法数据”}

时间:2016-01-15 06:23:15

标签: c# ironpython visual-studio-lightswitch

我有一个C#/ Lightswitch应用程序,用于通过python脚本生成一个xml文件。我没有编写脚本,但是我使用Python 2.7.1在C#应用程序之外测试了它们。并且他们正常工作没有错误。现在在Visual Studio中我已经保存(链接并复制到输出)服务器端项目中的py文件。在C#中,我调用此处显示的ASB_script.py ...

from ABuilder import ABuilder

# Specify the input and output file names
baseXMLFileName = 'as_func_base.xml'
outputFileName  = 'as_func_tP74.xml'
configFileName  = 'Config_File_Name.xml'

# Create ABuilder Instance
AS = ABuilder(baseXMLFileName, outputFileName, configFileName)

# Specify built-in sequences
globalChecks = AS.getGlobalChecks()
abort = AS.getAbortSequence()
more code.....

顶部的引用在ABuilder.py文件中定义,该文件也保存在项目中,看起来像这样......

import xml.etree.ElementTree as ET

class ABuilder(object):

channelTypes = ['Inputs', 'Outputs', 'Calculations', '[Other]...']

def __init__(self, baseXMLFileName, outputFileName, configFileName):
    self.SequenceTime = 0

    self.outputFileName = outputFileName
    self.tree = ET.parse(baseXMLFileName)
    self.root = self.tree.getroot()
    self.root.set("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")

    self.channelNames = []
    ctree = ET.parse(configFileName)
    #   croot = ctree.getroot()
    #   for elem in ctree.iter("Name"): 
    # more commented code

NEW POINT - 当我执行此代码时,它会抛出此帖子标题中列出的System.Exception语法错误。我忽略了在我的第一篇文章中指出Exeception发生在以下代码的最后一行......(应该看起来很熟悉)

case "RunPythonScript":

                    {
                        var engine = Python.CreateEngine();
                        var searchPaths = engine.GetSearchPaths();
                        searchPaths.Add(@"C:\Program Files (x86)\IronPython 2.7\Lib");
                        searchPaths.Add(@"D:\Projects\Python\xml-generation-python\");
                        engine.SetSearchPaths(searchPaths);

                        var mainfile = @"D:\Projects\Python\xml-generation-python\ASB_script_threePortProof.py";
                        var scope = engine.CreateScope();

                        // Execute  code
                        engine.CreateScriptSourceFromFile(mainfile).Execute(scope);

新点 - 我已经想出如何在Visual Studio框架内的“交互模式”中执行py文件,并且它们正确生成xml,所以我认为py和xml文件都可以。

Exception Error in Visual Studio

1 个答案:

答案 0 :(得分:1)

如果您在Visual Studio中创建了该文件,那么它很有可能与BOM一起保存并导致问题。默认情况下,Visual Studio以这种方式保存它。检查文件的编码并在没有文件的情况下保存。

要执行此操作,请打开文件并转到菜单File - > Advanced Save Options...并将Encoding更改为Unicode (UTF-8 without signature) - Codepage 65001(或任何合适的内容)并保存文件。

看看它是否会导致问题。