【问题标题】:script#, generating code for referenced libraryscript#,为引用的库生成代码
【发布时间】:2011-10-25 21:49:24
【问题描述】:

我有一个脚本#'app' 和一个包含 js 库的导入库。我从应用程序中引用了库,一切都编译好了。但是没有为库生成 JS 代码。例如该库有一个 Record 派生类,这需要将 .$create_foo_bar 方法发射到应用程序 js 中;它不是。 app代码是指生成的不存在的代码

那么,这是一个错误吗?如果不是我该怎么办?我是否必须将导入库构建为另一个应用程序并包含其生成的 js?是否有编译器开关说“也为引用的程序集生成 JS”?

【问题讨论】:

    标签: script#


    【解决方案1】:

    请记住,导入库根本不会生成 .js。脚本库引用了生成 .js 文件的导入库。所以,我认为你应该至少有 3 个项目,导入库(只是代理类,外部库的成员为空),Script Sharp(引用导入库并拥有自己的类并生成 javascript 文件)和使用 .js 文件的 Web 应用程序(记得在网页中引用库和脚本生成的 javascript 文件)

    【讨论】:

    • 这正是我所拥有的,如果导入库定义了需要为它们生成 JS 代码的类(例如记录派生类型),它就不起作用
    • 如果您没有与您在导入库中定义的内容相对应的现有脚本,则不要将其放入导入库中 - 将其放入常规脚本库中,然后编译器实际上会为这些生成脚本。
    【解决方案2】:

    我不会将类型配置为记录,而是将其配置为:

    [Imported]
    [IgnoreNamespace]
    [ScriptName("Object")]
    public class ImportedRecordLikeType
    {
        // ...
    }
    

    【讨论】:

    • 对,但还有其他构造需要发出 JS;这并没有解决这些情况
    • @pm100 那你能说得更具体点吗?我没有遇到任何中间情况。
    • 我正在使用的导入库中包含设置事件处理程序的静态代码。这会发出 JS 代码。在我看来,s# 编译器也应该为引用的程序集发出代码。这似乎并不难做到(但由于我们没有我们不知道的编译器的源代码 - 尽管反射器让我偷看了一下(
    • 我还看到 s# 编译器将为接口生成代码,就像它为记录生成代码一样——通过使用反射器窥视发现
    • 我可能仍然遗漏了一些东西(尽管请随时通过电子邮件向我发送示例项目设置),但是“S# 编译器也应该为引用的程序集发出代码”我不认为是什么通常在概念上预期。构建导入是为了向 S# 公开一些其他 .js 文件的“公共”对象,而不是引入新逻辑。如果您尝试从 C# 子类化 .js 原型,我不认为这是完全支持的。您必须自己进行一些运行时修复,但不是导入的一部分。
    猜你喜欢
    • 2011-12-15
    • 2020-12-23
    • 2011-04-28
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    相关资源
    最近更新 更多