问题标签 [dynamic-compilation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
233 浏览

grails - enable auto recompilation in grails vaadin project

I have a grails vaadin project. the auto recompilation feature used to work well until I began to use internationalization, since then I have to restart the server to recompile any change.

Any Idea ?

0 投票
1 回答
139 浏览

java - 编译了一个类,但它在哪里?

我不是 Java 专家,而且我对编译和运行动态生成代码的整个概念还很陌生,这在其他语言中非常简单,特别是 Javascript 和 PHP 等脚本语言。

我正在关注这段代码: http ://www.java2s.com/Code/Java/JDK-6/CompilingfromMemory.htm 我做了这样的事情:

想象一下,字符串代码类似于

在抛出 ClassNotFoundException 的 Class.forName 之前它运行良好。我很困惑,因为我似乎没有从片段中删除一些重要的东西:所以,这个类已经编译了,但是它去哪儿了?

我读过一些关于使用不同类加载器的文章,但是就像我说的那样,我对所有这些东西都很陌生,我不知道去哪里以及如何使用它,以及我应该如何定义自己的 ClassLoader 扩展. 我唯一知道的是,一切对我来说似乎都很复杂......

在 Windows 7 和 JDK 1.7 中使用 Eclipse Indigo。

0 投票
1 回答
1738 浏览

asp.net-mvc-3 - MEF 和 MVC 3 - 如何从 mef 容器动态加载嵌入式视图?

我正在构建一个使用 MEF 的 MVC 3 应用程序。主要思想是具有插件机制,其中模型、控制器和视图在运行时从 mef 容器动态加载。

每个插件/模块由两个程序集组成:

  • Module1.Data.dll(包含模型定义)
  • Module1.Web.dll(包含控制器和视图)

并放在 Web 应用程序 bin 内的 Plugins 目录中:

  • WebApp/Bin/Plugins/Module1.Data.dll
  • WebApp/Bin/Plugins/Module1.Web.dll
  • WebApp/Bin/Plugins/Module2.Data.dll
  • WebApp/Bin/插件/Module2.Web.dll
  • WebApp/Bin/Plugins/ModuleCore.Data.dll
  • WebApp/Bin/Plugins/ModuleCore.Web.dll
  • ETC...

还有一个核心模块被所有其他模块引用:ModuleCore.Data.dll 和 ModuleCore.Web.dll。

然后,在 Global.asax 中,容器按以下方式构建:

CustomViewEngine 被创建并注册并用于在模块组装中查找视图:

用于从容器加载控制器的控制器工厂:

以及用于从容器获取程序集的自定义虚拟路径提供程序:

好的,处理可插拔模型、控制器和视图的整个基础设施都准备好了。现在一切正常......除了一件事 -强类型视图

为了更详细地说明问题,让我们准备场景:

  • UserDTO 模型位于 Module1.Data.dll
  • ShowUserController.cs 位于 Module1.Web.dll/Controllers/
  • Index.cshtml 位于 Module1.Web.dll/Views/ShowUser (声明@model Module1.Data.UserDto)

现在我们执行以下操作:

  1. 运行应用程序并转到 HOST/ShowUser/Index(在 ShowUserController 上执行操作方法 Index 并获取视图 Index.cshtml)
  2. 获取视图 Index.cshtml 后 - 编译开始(通过 RazorBuildProvider)
  3. 抛出异常:“在命名空间 Module1 中找不到数据类型”,换句话说,在动态构建视图期间找不到 UserDTO

因此,编译器/构建器似乎没有查看 Module1.Data.dll 的 bin/Plugins 文件夹,因为当我将此文件复制到 bin 文件夹时 - 它的措辞很好。

问题/问题:为什么构建器没有查看 bin/Plugins 文件夹,即使此目录是由 AppDomain.CurrentDomain.AppendPrivatePath 方法添加的?如何为程序集生成器添加一次私有路径,以便将插件文件夹考虑在内?

我已经设法通过创建覆盖标准的 CustomRazorBuildProvider 来解决一些问题:

但是这种解决方案的缺点是每次编译视图时,都需要添加对Plugins文件夹中所有程序集的引用,这可能会在以后使用大量插件时导致性能问题。

有更好的解决方案吗?

0 投票
0 回答
172 浏览

grails - 由于 grails 的 spring-mobile 插件导致动态编译失败

我正在为 grails 使用 spring 移动插件 0.3,并且由于在任何控制器中使用它,如果我在该控制器中进行任何修改并在浏览器中刷新应用程序 url,编译失败并出现错误

withMobileDevice 由插件提供..

配置中是否有任何修改我可以做以支持使用此插件进行动态编译,并且每次使用插件对控制器进行任何修改时都无需重新启动服务器。谢谢

0 投票
2 回答
1444 浏览

c# - 加载动态创建的 ASCX 控件(通过代码)

我正在Web User Controls通过代码创建(我的 C# 代码写出标记、代码隐藏和设计器文件到磁盘上的回调)。控件都创建得很好。我可以将它们添加到我的网络项目中并将它们放在一个页面上。

当我尝试使用LoadControl(path)它加载控件时说:

这是因为控件尚未编译。

但我的要求是动态加载控件而不重新编译解决方案。

如何仅在创建控件文件时编译用户控件?因为这似乎是唯一的出路。

编辑:-我的猜测是,由于该文件尚未编译,但运行时不允许加载它。我尝试使用CodeDom编译器编译代码文件。喜欢:

但它抱怨cannot find metadata file Telerik.Web.Design.dll等等。我不想硬编码telerik路径,因为它在托管系统中可能不同(尽管它在bin当前的网络应用程序中)。也是MyCurrentDll.dll我从中编译代码文件的文件的dll。我该如何解决这个问题?

我的想法是编译代码文件,dll动态创建一个并将其复制到 Web 应用程序的bin目录中。它可能会解决我最初提出的问题。

编辑 2:- 经过试用后,我能够动态编译代码文件并生成dll. 即使在生成 dll 并将其放入bin我的应用程序之后,我也无法使用virtual path. 我尝试了以下方法:

在此之后加载 ctrl。我分配它的Id属性并将其添加到asp.net Panel控件中。但回发后它不可见:(

现在我要么必须以某种方式使动态编译的 dll 类型可用于运行时(可能是 appdomain),这样当我使用虚拟路径加载控件时,它会被正确加载,我不明白HtmlParseException为什么加载控件表单Type没有显示向上。

PS:-我已经加载了一个Label控件Type,它工作正常。

0 投票
1 回答
48 浏览

interpreter - Cg 中使用的动态编译和某些脚本中使用的解释器有什么区别?

在 Cg 教程中,它说 Cg 使用动态编译。我注意到它的编译器与解释器有一些相似之处,因为它们不需要在第一遍编译所有代码,如果存在错误,您会在运行 exe 时找到它。

但是,它们之间有什么区别。谁能给我一些细节?非常感谢。

0 投票
1 回答
60 浏览

c - C 在代码中获取编译选项

我正在为应用程序编写 GUI,但主要开发人员希望在 Makefile 中设置 GUI 是否与其余部分一起编译。我将所有 GTK+ 代码放在一个单独的文件中,但在主文件中我需要测试应用程序是否正在使用 GUI 编译,那么我该如何测试呢?

例如:

0 投票
0 回答
614 浏览

c# - 为什么 CompilerOptions.EmbeddedResources 不将资源文件附加到程序集

我正在尝试使用 CSharpCodeProvider 生成一个 exe,该 exe 将是一个 Windows 窗体项目。exe 必须有一个资源,生成的程序集将在运行时访问该资源。现在要生成该资源,我使用 ResourceWriter 类,然后将其附加到编译器选项 EmbeddedResources。但它似乎不起作用,我得到了 MissingManifestResourceException。

这是代码:

希望有人能够帮助我,因为我已经尝试了一个多星期。谢谢你。

0 投票
1 回答
825 浏览

c# - 将字符串转换为 c# 可执行代码

我有一个小解决方案,我对此主题进行了研究,但找不到我正在寻找的确切内容,示例是在字符串中编译整个方法或完整表达式。我想要说我有这段代码,我试图使用 Newtonsoft.json 从 json 中提取数据,

我想要的是通过这个部分,

作为字符串并转换为 c# 代码,这样我就可以使该值动态地作为 json 文件格式彼此非常不同。

编辑:

以下是我正在使用的 json 字符串,

知道如何或什至可能吗?

0 投票
2 回答
395 浏览

api - Haskell GHC API 中的动态编译错误

我一直在尝试按照此处找到的教程使用 GHC API 进行一些基本的动态代码编译。

这段代码:

应该从另一个名为 Test.hs 的文件中获取打印功能,加载它并运行它的打印功能。

我使用 ghc 版本 7.4.1 使用以下命令编译代码:

但收到以下错误:

我究竟做错了什么?我已经检查了 GHC API 文档,但对这类事情还不够精通,无法理解其中的大部分内容。