问题标签 [codedom]

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 投票
4 回答
4066 浏览

c# - 代码域和字符串处理

我对此进行了研究,但找不到任何可靠的东西,并想看看是否有人可以为我指明正确的方向。我正在尝试查看 Codedom 是否可以处理不同语言之间的字符串和连接,而无需我为每种语言设置条件字符串。

例如,我需要通过 Codedom 在 C# 和 VB.NET 中生成如下所示的内容:

C#

VB.NET

CodeMethodInvokeExpressionfor errorMsg.ReplaceandSystem.Windows.Browser.HtmlPage.Window.Eval很简单,就是它们里面的字符串我不知道 Codedom 能不能自动处理。

0 投票
1 回答
387 浏览

c# - 如何通过 Codedom 实现“句柄”

我一直在尝试弄清楚如何使用 Codedom 将处理程序添加到方法中,但还没有走得太远。

我想通过 Codedom 重现的方法是:

该方法很容易创建:

但我不知道如何添加Handles btnStart.Click. 我看过CodeAttachEventStatement,但是我不相信它可以做Handles一个方法。

有谁知道如何实现这一目标?

编辑:下面的解决方案适用于 VB,但不适用于 C#,因为处理程序正在寻找处理事件而不是方法。

0 投票
4 回答
5072 浏览

.net - 如何使用 CodeDOM 在 AppDomain 中创建和加载程序集?

我正在开发一个项目,该项目将使用 CodeDOM 创建一个评估用户定义表达式的类,为该类创建一个程序集并加载该程序集。由于可能有相当数量的用户定义表达式,我想首先创建一个 AppDomain,在该 AppDomain 中为程序集执行 CodeDOM 创建/加载和执行,然后卸载 AppDomain。

我进行了相当多的搜索,发现了许多如何将现有程序集加载到 AppDomain 中的示例,但我似乎找不到一个向我展示如何从 AppDomain 中创建程序集示例。

此示例 ( DynamicCode ) 使用 CodeDOM 创建程序集,然后将其加载到 AppDomain 中,但是,作者正在将程序集生成到磁盘。我宁愿在内存中生成程序集,这样我就不必管理生成的程序集的清理。(即使这确实在临时文件夹中创建了一个 .dll)。

谁能给我举个例子来说明如何做到这一点?

任何帮助将不胜感激。

我已经从我的代码中摘录了一些摘录,所以你们都可以感受一下我到目前为止的内容:

我相信这些代码片段显示了我项目的基本功能。现在我需要做的就是将它包装在它自己的 AppDomain 中。

0 投票
4 回答
2384 浏览

c# - “CSharpCodeProvider.Parse”的替代方案

我正在寻找CSharpCodeProvider.Parse. 该方法应该解析 [C#] 代码源并返回一个CompileUnit对象。但是,该方法并未在任何 .Net 框架中实现。

我的目的是能够导航 C# CodeDOM 而无需编译它。我正在编写一个执行一些代码分析的应用程序,但我不一定拥有所有外部引用,这意味着我无法编译它。

0 投票
2 回答
345 浏览

c# - 如何生成c#代码?

我正在编写一个桌面应用程序。它需要在客户端机器上生成 c# 代码。

我想过使用 CodeDOM(复杂)或简单的字符串操作(脆弱)。还有什么?推荐哪种方式?

0 投票
1 回答
810 浏览

c# - CompileAssemblyFromDom(CodeDom 编译器)生成的行号与 Visual Studio 不同

我正在使用 CodeDOM 生成和编译程序集。我发现如果生成的代码无法编译,CompileAssemblyFromDom 方法会生成与 Visual Studio 生成的不同的行号。

例如,如果我在代码提供程序上调用 GenerateCodeFromCompileUnit,将生成的代码带入 Visual Studio 并尝试编译它,每个错误上的行号直接与代码行相关,但 CompilerResults 对象中返回的行号来自CompileAssemblyFromDom 方法不直接关联到生成代码的同一行。

事实证明这对我来说是个问题,因为我正在动态编译代码,如果有错误,我想显示代码并为用户突出显示有问题的行。有没有人遇到过同样的问题?

编辑: 我认为这是因为作为注释的整行在 CodeDom 提供程序报告行号时不算作一行,但它们与 Visual Studio 一起使用。有什么方法可以更改 CodeDom 提供程序的行号计算以包含注释行?

0 投票
1 回答
613 浏览

.net - CSharpCodeProvider 从 .NET 4.0 应用程序输出 .NET 2.0 程序集

我正在使用 CSharpCodeProvider 将 CodeDom 对象编译为程序集。应用程序本身在 .NET 4.0 下运行。但是,我需要 CompileAssemblyFromDom 的输出来针对 .NET 2.0 进行构建,以便与某些外部资源兼容。如何告诉 CSharpCodeProvider 针对 .NET 2.0 构建?

0 投票
1 回答
625 浏览

c# - 更改生成的 C# 类名称

我正在使用ManagementClass.GetStronglyTypedClassCode来获取对 CodeTypeDeclaration 实例的引用。我想更改生成的类名,但此方法不允许这样做(据我所知)。我试图更改 CodeTypeDeclaration.Name 属性,但这不会更改构造函数名称等,因此 C# 编译器在编译类时会返回错误。我可以对班级进行简单的搜索/替换,但这似乎不可靠。有没有办法可靠地更改由 CodeTypeDeclaration 实例表示的 C# 类的名称?

代码不多,但这里是相关的片段(我使用的是 PowerShell):

0 投票
1 回答
504 浏览

c# - 如何将此下载代码转换为 CodeDOM?

我是使用 codedom 的新手。

有人能告诉我如何将此代码转换为在 C# 中运行吗?

代码:

0 投票
1 回答
1878 浏览

c# - 使用 CodeDom 生成带有 Value 和 Name 的枚举

我有一小段代码:

很好,我得到了一个枚举:public enum eShape { Round, Square, }

但是除了名称之外还可以设置一个值吗?如: