问题标签 [runtime-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 回答
1440 浏览

wpf - 从 txt 文件编译 C# 代码以与正在运行的 wpf 应用程序交互

我一直在网上寻找一种在运行时编译代码和操作正在运行的应用程序对象(属性等)的简洁方法。我遇到过 Snippy、CodeDom 和 CSharpCodeProvider,但我并不完全了解如何在我的应用程序中使用这些解决方案来做我想做的事。底线是,我想在外部文件中有一小部分代码,这样我就可以在运行时换出不同的代码(例如操作数据的公式等)。有人可以向我解释一下我该如何在一个整洁的 WPF 应用程序?我只需要向外部代码传递一些数据,执行后它会返回一些我可以用来填充对象的数据。PS:我还考虑过从字符串解析数学表达式并以这种方式操作我的数据,但如果我可以在运行时在外部解析和执行 C# 代码,它将给我更多的自由和对公式和数据的控制。提前致谢。

0 投票
1 回答
2394 浏览

c# - 如何在c#、winforms的运行时编译中传递参数?

我被困在运行时编译和 CodeDom 上。这是迄今为止我所拥有的简化示例。

它工作得很好,并加载了测试表单。

但!我需要将一个参数传递给这个测试表单(面板控件列表)来填充表单。

我怎样才能做到这一点?也许,我看错了方向,必须以不同的方式完成?提前非常感谢!

编辑 最后,我放弃了 CodeDom 并改用Mono.Cecil,将 .exe 文件与我的主程序中的信息一起注入。

0 投票
2 回答
6427 浏览

scala - scala 作为脚本语言

可能重复:
Scala 中的“eval”

我知道 scala 是一种编译语言,但我也知道我可以将类动态加载到 jvm 中,并且我可以在运行时调用 scala 编译器,最后但并非最不重要的是,我也有一个很棒的 repl,所以将 scala 作为脚本语言应该是可能的。

所以我需要运行一些任务:

简单解读:

调用外部函数:

实现功能:

能解决我所有的问题会很棒。

0 投票
4 回答
896 浏览

c# - 动态编译一段代码并将其添加到当前类中

我想在类的构造函数中动态创建几个属性并将它们添加到当前类中。该属性的模板如下

我已经阅读了一些关于 CodeDom 和 Reflection.Emit 的内容,但无法弄清楚如何在这个特定的用例中使用它们。

任何线索将不胜感激。提前致谢

编辑:由于问题的数量,我正在详细说明目的......我正在尝试实现视图模型定位器的基类。xaml 中的绑定是通过其路径引用属性来实现的,因此它必须是属性。要添加的属性的类型和名称仅在运行时才知道,因此我使用反射来获取它们。简而言之,我需要一个获取一段代码并将其动态编译到给定类中的示例。

0 投票
2 回答
129 浏览

java - Java - 在运行时访问非编译的 .java 文件中的字符串

我有一个问题要找你。

我有一堆 Java 文件 (.java),它们都包含一个类声明和一个字符串数组。我需要对数组做一些事情。访问它的最佳方式是什么?

我尝试使用 JavaCompiler 类,但这似乎不起作用 - 那我应该使用正则表达式吗?

以下是文件的示例:

而且可能有一百个这样的文件。

因此,总结一下:访问该数据的最佳方式是什么?

(显然,我不能简单地用我的项目编译它们。)

0 投票
2 回答
763 浏览

java - 动态程序更新、运行时编译和类加载器

我有一个应用程序需要能够在不停止和重新启动的情况下更新自身的一部分(一次一个类)。使用 JavaCompiler API,可以直接生成修改后的类源代码、重新编译、加载和实例化类。我可以在内存中完成这一切(没有从磁盘或网络读取文件)。

应用程序永远不会实例化这样一个类的多个对象。该对象只会有两个或三个引用。当修改后的类被加载并实例化时,所有这些引用都将更改为新对象。我还可以保证在加载修改后的类时,受影响的类中没有任何方法在另一个线程中运行。

我的问题是:我的类加载器在加载与之前加载的类同名的修改类时会遇到问题吗?

如果我没有在类加载器中显式实现加载类的缓存,那会避免问题吗?还是委托给父类加载器仍然会导致问题?

我希望使用我的类加载器的单个实例,但如果有必要,我可以在每次更新类时实例化一个新实例。

注意:我查看了 OSGI,它似乎比我需要的要多得多。

0 投票
1 回答
3090 浏览

asp.net - 为动态编译的 ASP.NET 网站的 App_Code 文件夹提供显式程序集名称?

在动态编译的 ASP.NET 网站项目中,是否可以显式命名 App_Code 文件夹的程序集?

例如,在正常情况下,当我运行 ASP.NET 网站时,生成到Temporary ASP.NET Files\文件夹中的程序集名称是部分随机的,就像 neizakfoApp_Code.neizakfo.dll是可以不同的部分一样。我可以明确地为程序集提供一个名称吗?App_Code_Web1.dll

澄清

根据业务需求,网站不能进行预编译/部署。Temporary ASP.NET Files因此,如上所述,我正在寻找文件夹上下文和动态编译程序集的解决方案。


背景
我在寻找一种方法来使用存储在配置中的程序集限定名称对网站的 App_Code 文件夹中的类执行动态类型实例化时遇到了这个问题,但从网页实例化,因此跨越了程序集边界。因为网页和 app_code 代码默认编译为两个不同的程序集,所以 Type.GetType(..) 方法在当前执行的程序集(网页)或 mscorlib 中搜索类型名称的默认行为不会足以从 App_Code 程序集中选择任何类型。由于是随机的,我不知道 app_code 程序集名称是否包含在程序集限定字符串中。

我可以将数据类型放入类库中(因为它确实有一个预定义/确切的名称)来解决这个问题,但是我想知道如何在网站本身内部执行此操作而不创建类库项目目的。

0 投票
1 回答
162 浏览

c# - 如何在运行时编译中向方法发送参数

根据帖子,我在 Visual Studio 2010 中制作了一个 C# 项目:

http://www.blackwasp.co.uk/RuntimeCompilation_1.aspx

我想读取一个 txt 文件并将参数发送到一个方法,然后得到结果。现在我的问题是如何在运行时编译中向方法发送参数或参数?

0 投票
6 回答
14422 浏览

c++ - 有没有办法在运行时用 C 或 C++ 编译附加代码?

这是我想做的事情:

  1. 运行一个程序并初始化一些数据结构。
  2. 然后编译可以访问/修改现有数据结构的附加代码。
  3. 根据需要重复步骤 2。

我希望能够在类 Unix 系统(尤其是 Linux 和 Mac OS X)上同时使用CC++使用gcc(并最终)来做到这一点。Java这个想法基本上是为这些语言实现一个 read-eval-print 循环,在输入表达式和语句时编译它们并使用它们来修改现有的数据结构(在脚本语言中一直都在这样做)。我正在编写这个工具python,它会生成C/C++文件,但这不应该是相关的。

我已经探索过使用共享库来执行此操作,但了解到修改共享库不会影响已经运行的程序。我也尝试过使用共享内存,但找不到将函数加载到堆上的方法。我也考虑过使用汇编代码,但还没有尝试这样做。

我宁愿不使用任何编译器,gcc除非绝对没有办法在gcc.

如果有人有任何想法或知道如何做到这一点,我们将不胜感激。

0 投票
1 回答
728 浏览

c# - 运行时编译生成无法删除的文件

我有这个控制台类型的东西,它接受一行 C# 代码,将它包装在一些周围的代码中并将它编译成一个程序集。然后,我从该程序集中调用该方法,输出结果,就是这样。

问题是,程序集需要有一个名称,以便我可以将其设置为朋友程序集,以便它可以访问非公共类。我将其命名为“控制台”。

一切都按预期工作,但问题是我无法在一个脚本完成后运行第二个脚本,因为名为“console”的文件已经存在于目录中并且不能被覆盖。

我已经尝试处理所有具有 Dispose 方法的东西。我尝试使用 File.Delete 手动删除文件。没有任何帮助。

所以这是我正在使用的代码。我希望有一个人可以帮助我。