问题标签 [system-codedom-compiler]

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 投票
5 回答
30373 浏览

c# - 如何将嵌入式资源读取为字节数组而不将其写入磁盘?

在我的应用程序中,我使用 CodeDom.Compiler 从 source.cs 文件编译另一个程序,并在编译时使用以下方法嵌入一些资源(exe 和 dll 文件):

在编译的文件中,我需要将嵌入的资源读取为字节数组。现在我通过使用下面的函数和使用将资源提取到磁盘来做到这一点

我使用此功能将两个文件提取到磁盘后执行此操作:

我怎样才能做同样的事情(将嵌入式资源作为字节数组获取)但不向硬盘写入任何内容?

0 投票
1 回答
442 浏览

c# - 从“源代码编译程序集”调用“主机”回调

我正在使用System.CodeDom.Compiler. 编译后的源代码中的所有内容都运行良好,无论我在此源代码中放入什么。我知道如何调用我的函数:

但是假设我正在使用 WebClient 使用 WebClient.DownloadStringAsync 异步检索字符串。或者我希望我编译的源代码告诉主机“嘿,我为你准备了一个很好的字符串”的任何其他上下文。例如,我使用了 WebBrowser。基本上,我知道如何处理这两个实例中的每一个:我的托管程序和编译程序,但我希望我的编译程序与主机通信。顺便说一句,我不是一个经验丰富的程序员,所以我没有想到任何明显的方法。

我试过的:

1. 我真的不需要尝试它,因为它可以工作,但我可以使用计时器读取编译源中的字符串堆栈或任务队列,但我的应用程序的目的是让 +- 60 个脚本能够执行当前任务,而不是连续的后台进程,因此在 CPU 上效率不高。

2. 我已经将处理程序传递给编译源,就像它在托管应用程序中一样:

它什么也没做。

3. 也许我可以通过将类或变量传递给已编译的程序集来共享它?

所以,问题是这个或另一个:

  • 如何有效地观察编译程序中特定变量或属性的变化?

  • 如何将回调附加到主机?

0 投票
1 回答
706 浏览

c# - 使用 CodeDOM 源代码和类文件一起

我为 codeDOM 编译器创建了一个表单,如果它在单个文本文件中,它可以编译我的代码,但我希望能够编译文本文件中的源代码和文本文件中的类,以便它们可以一起工作.

我不确定如何对 codeDOM 进行编码以将我的类文件添加为要编译的主要源的资源

这是我到目前为止所拥有的

codeDOM 编译器

源文件

类文件

任何想法如何做到这一点,因为我已经用谷歌搜索了它并且我没有得到任何想法,或者至少我没有理解

另一方面,这不适用于源代码,但我正在尝试将其调整为使用类文件

0 投票
1 回答
170 浏览

c# - 如何防止在控制台中打开我动态生成的 exe

我在 c# 4.0 中工作,我想动态生成一个可执行文件,所以我使用了 Code Dome,但是当我执行它时,它在控制台中打开,然后我的表单显示,我想生成 winform 可执行文件。我怎样才能实现我的目标。代码如下:

0 投票
1 回答
841 浏览

.net - 从 .EXE 创建 .EXE

所以我想做的是在vb的程序中创建一个可执行文件。我的意思是有一个程序可以输出.EXE。我尝试做的是创建一个可以输出运行预定义命令的较小程序的程序。

我所知道的是,它在某种程度上是可能的。您打开存根并向其添加额外代码并再次将其另存为 .EXE。

0 投票
1 回答
502 浏览

.net-assembly - 是否可以使用 CodeDOM 获取在内存中生成的程序集的流?

在我的一些测试中,我需要生成一些程序集,然后使用 ICSharpCode.Decompiler “反编译”它们, ICSharpCode.Decompiler 使用Mono.Cecil检查程序集。

出于性能原因,我想在内存中生成程序集以避免磁盘 I/O。

您可以在下面找到一些我打算使用的代码:

所以问题是:是否可以实现 GetAssemblyContentAsStream() ?

0 投票
2 回答
362 浏览

xml-serialization - Xml Serializer 将其动态生成的代码存储在哪里?

命名空间中的 XML 序列化程序使用CodeDOMSystem.Xml.Serialization动态生成XmlSerializationReaderXmlSerializationWriter类。

我想看看反汇编程序中的这些类。

序列化程序将具有此动态生成代码的临时程序集文件存储在哪里?过去 30 分钟,我一直试图在 Reflector 中找到它,但无济于事。

我从 Reflector 收集到的只是它将它存储在某个临时目录中。我查了C:\temp但那里没有 .dll。我查找了C:\tmp,那里有一些 PNG 文件,它们看起来不是真正的 PNG,而是 Windows 生成的一些用于存储临时数据的二进制文件。

如果你知道,请告诉我。

0 投票
0 回答
468 浏览

frameworks - Windows 无法打开此程序,因为许可证执行系统已被篡改或损坏

我的网站有问题。我最近将网站从 Framework 2.0 升级到了 4.0。现在在网站上输入 URL 时。我收到此错误消息

在此处查看错误截图:http: //www.bilddump.se/bilder/20150215151938-195.252.32.111.bmp

错误的开头是: [Win32Exception (0x80004005): Windows 无法打开此程序,因为许可证执行系统已被篡改或损坏 System.CodeDom.Compiler.Executor.ExecWaitWithCaptureUnimpersonated(SafeUserTokenHandle userToken, String cmd, String currentDir

我查看了 web.config 文件,我的 system.codedom 标记为空,如下所示。我可能想知道是否需要在框架 4.0 中以正确的方式设置它们。如果这是导致问题的原因,我想知道正确的 system.codedom 标签是什么样的?

0 投票
0 回答
290 浏览

c# - CodeDom 编译器:默认引用哪些程序集?

简短:哪些程序集(框架 DLL)默认包含在 .NET CodeDom 编译器(CSharpCodeProviderVBCodeProvider)中,而没有明确添加对 CompilerParameters 的引用?


我正在使用CodeDom工具,即CSharpCodeProviderVBCodeProvider,在运行时编译程序集。我注意到,默认情况下包含一些但不是所有的 .NET 引用程序集。

例如,我可以在System.dll不添加引用的情况下使用其中的所有内容,但没有添加CompilerParameters任何内容System.Numerics.dll。对于后者,我需要添加params.ReferencedAssemblies.Add("System.Numerics.dll")到我的代码中。

因此我的问题是:我怎么知道默认引用了哪些程序集,哪些没有?

相关代码

无需添加引用即可编译此代码:

此代码不能:

我用来编译的代码(缩写):

0 投票
1 回答
764 浏览

c# - 如何以编程方式在 C# 中进行方法重载解析?

当 C# 编译器解释方法调用时,它必须使用(静态)参数类型来确定实际调用的是哪个重载。我希望能够以编程方式执行此操作。

如果我有方法的名称 (a string)、声明它的类型(的实例System.Type)和参数类型列表,我希望能够调用标准库函数并取回MethodInfo表示 C# 方法的对象编译器会选择调用。

例如,如果我有

然后我想要类似这个虚构功能GetOverloadedMethod的东西System.Type

在这种情况下methodToInvoke应该是public void myFunc(BaseClass bc)

注意:这两种方法GetMethodGetMethods不会满足我的目的。他们都不做任何重载决议。在这种情况下,GetMethod它只返回完全匹配。如果你给它更多的派生参数,它只会返回任何东西。或者你可能很幸运地得到了一个不提供任何有用信息的模棱两可的异常。