问题标签 [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.
c# - 以编程方式格式化生成的 CodeDom 代码
如何确保从如下代码生成的 CS 格式正确,即好像我们按下了CTRL++ ?它是 C#KD
我们正在做一些事情:
c# - 如何创建一个继承自另一个类并在 CodeDom 中传递类型参数的类?
这是我希望生成的类声明的样子:
}
这段代码(剪断):
产生这个类声明:
我究竟做错了什么?
c# - 什么控制 codedom 生成文件中的版本号?
是什么控制了 codedom 生成文件中的版本号?
我们的一些开发人员获得:
而其他人得到:
但是每个人似乎都在运行.Net 3.5 SP1。
为什么有些有 4005 而其他有 3082 作为内部版本号?
这对于源代码控制来说是一个真正的痛苦。
c# - 如何通过使用 CodeDOM 公开成员对象?
我到处都能看到有关如何使用 System.CodeDom 命名空间编译程序集的教程。
但是如何从运行时编译的程序集中访问程序集的成员对象(我不是在谈论访问类,我想访问特定的成员变量)?在 Microsoft Script Control 中,可以使用 AddObject 方法来完成。
我想如果在运行时编译的程序集的行为与其他普通程序集一样,那么我应该使用 .NET 远程处理吗?但这不是矫枉过正吗?我希望有一个更简单的方法。
javascript - 在运行时解释和/或接收 dotNet 代码
Html 可以包含嵌入其中的少量 Javascript(例如在onclick
事件处理程序中定义)。
如果我使用像 C# 这样的 dotNet 语言编写 Html 浏览器,我可以使用哪些技术或 API 来运行这样的 Javascript 片段,因为我直到运行时才收到它(并将其作为字符串数据接收,而不是作为可执行文件接收代码)?
如果要运行的代码是 C# 片段而不是 Javascript,是更容易还是更难?
是否有任何技术不需要我的代码具有不寻常的特权?例如,像
CodeCompiler.FromSource
requires之类的方法SecurityPermissionFlag.UnmanagedCode
(在我看来这太过分了:我不明白为什么编译代码如此危险)。如果我控制服务器端和客户端代码,我还可以考虑在服务器而不是客户端上编译这些脚本片段,然后将其作为预编译代码发送到客户端执行。有没有办法通过网络将此类代码(可能是 dotNet 程序集)发送到客户端,让客户端代码从网络将其接收到客户端 RAM,并在客户端调用它而不将其存储为客户端磁盘驱动器上的文件?
编辑
我已经回答了前三个问题:我已经接受了编译需要高特权的事实。我不明白为什么;也许(尽管我认为这不是一个非常有说服力的理由)这是因为编译器是使用非托管代码实现的。当他们使用托管代码重新实现编译器时,也许这会改变,也许是在“C# 版本 5”时间范围内。无论如何,无论出于何种原因,它似乎就是这样,并且没有解决方法(其他类似的 API,但需要较少的权限)。
那么我剩下的问题是如何从一台机器到另一台机器获取一个组装实例。当我有时间时,我会找出不受信任的代码是否可以运行该Assembly.Load(byte[] rawAssembly)
方法。
c# - 卸载 CodeDom 编译的程序集
我有一些 C# 代码(我们称之为“脚本”)我在运行时编译。它在我的主程序中使用了一个接口,我用来访问它的功能。一旦编译完成,CompilerResults.CompiledAssembly
在这种情况下我可以CreateInstance(Type)
。
完成使用脚本后,我想完全卸载。据我了解,如果我创建一个单独的应用程序域,我只能这样做: Loading DLLs into a separate AppDomain
我有一些特定于我的实施的问题:
- 如果我有多个脚本要编译并想独立卸载它们,我是否必须为每个脚本创建单独的应用程序域?
- 我应该使用哪些应用域名?GUID 是个好主意吗?有没有我应该避免的可能冲突的名字?
- 如果程序集位于单独的应用程序域中,访问主程序中的界面是否有任何问题?我目前
ReferencedAssemblies.Add(typeof(Interface).Assembly.Location)
在编译之前正在做。 - 我可以使用
CompilerParameters GenerateInMemory=true
,还是必须将其保存在某个地方?
c# - System.CodeDom.CodeCompileUnit 来自 System.Reflection.Emit.AssemblyBuilder 实例
我正在查看 TLBImp2 的 CodePlex 代码,并希望从发出的 IL 生成 C# 源代码。
有没有办法从 System.Reflection.Emit.AssemblyBuilder 实例中获取 System.CodeDom.CodeCompileUnit?
c# - How to programmatically parse and modify C# code
What I want to do is to read C# code, parse it, insert some method calls and compile it finally.
Is it possible to convert C# source code (a list of strings) to CodeDOM objects?
asp.net - 如何测试 BuildProvider
我创建了一个简单的 BuildProvider 作为起点,尽管我没有收到任何错误,但我也无权访问生成的类。事实上,我什至不知道我的 BuildProvider 是否被调用过。有没有办法调试 BuildProvider?我如何知道我的 CodeDom 是否有问题或其他问题?
谢谢!
c# - 从生成它的应用程序中调试生成的 .NET 程序集
简而言之:如何在生成程序的调试会话期间调试生成的代码?(见下面的代码)
我面临以下问题:我想从生成它的应用程序中调试到动态生成/编译的代码。我提供了一个过于简单的例子来澄清它。这个例子不需要调试!我的真实应用程序生成了更多的行和代码,这些行和代码确实证明了调试是合理的,相信我:-) 我想知道是否有一种方法可以调试或在HelloWorld
. 进入 InvokeMethod 调用不起作用。也许解决方案涉及在调用站点对生成的程序集进行代码修改。
我已经看了很多问题(例如在 Visual Studio .NET中调试动态加载的程序集),但没有一个对解决问题有帮助(如果完全可以解决?)
我从http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=118 获取代码作为基础并修复了过时的调用。除此之外,我在内存中即时生成了程序集,并且调用运行良好。我显式地生成了一个带有调试信息的程序集,这给了我希望:如果无法调试,为什么会有选项?