代码之家  ›  专栏  ›  技术社区  ›  John K

引用和使用JScript.NET “仅功能” exe程序集

  •  6
  • John K  · 技术社区  · 14 年前

    1从JSC编译的程序集

    我已经使用JScript编译器编译了客户端JavaScript(jsc.exe文件)在服务器端,试图从单元测试项目中测试一些东西,甚至可以在服务器端调试一些东西。

    已编译的文件 仅包含函数 如下所示(仅举个例子),它编译成位域.exe. 注意,源代码中没有包装类或包。

    function BitField(){
        this.values = [];
    }
    // more functions ...
    

    -------结束文件-------

    jsc /fast-  /out:BitField.exe Bitfield.js
    

    成功! 嗯,有点。。。。


    其次,我创建了一个测试项目(用C#)并在位域.exe程序集成功。(项目的类型是无关的,但我提供了更多的描述来描绘一个完整的画面。)

    问题似乎是: 我找不到命名空间或可以访问BitField.exe 来自我的C测试项目的程序集 . 大会似乎不是一个“正常”。

    换句话说,我需要C语言#

    using ???WHAT???
    

    注意 class , package 包裹


    更新/证明


    alt text

    1 回复  |  直到 14 年前
        1
  •  2
  •   Chris Jaynes    14 年前

    在玩了一段时间之后,尝试了各种命令行开关的组合jsc.exe文件,我很确定你想做的事不会如你所愿。如果尝试将包含函数的js文件编译到.Net库程序集中,则会出现错误:

    BitField.js(1,1) : error JS1234: Only type and package definitions are allowed inside a library
    

    我会保持你的“干净”比特域.js文件,然后创建一个批处理文件,将其包装在JScript类中,并将其写出一个“脏”js文件。如果把它看作是将代码编译到DLL中的一部分,那么它是相当干净的。包装的代码比特域.js进入BitFieldClass.js文件看起来像这样:

    合并到-类.js

    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var ForReading = 1;
    var inputFile = fso.OpenTextFile("BitField.js",ForReading, false);
    var outputFile = fso.CreateTextFile("BitFieldClass.js", true);
    
    outputFile.write("class BitFieldClass{\n");
    while (!inputFile.AtEndOfStream)
    {
        var textLine = inputFile.ReadLine();
        outputFile.write (textLine + "\n");
    }
    outputFile.write("}");
    outputFile.close();
    

    然后打包和编译的批处理文件非常简单:

    编译-js.bat公司

    cscript merge-into-class.js
    jsc /t:library /out:BitFieldClass.dll bitFieldClass.js
    

    推荐文章