是否可以将动态程序集保存到磁盘?

2023-11-21

最近买了阿延德的书在 Boo 中构建 DSL(购买它,阅读它,太棒了)但是我遇到了一个实现问题,我想看看生成的代码是什么样的。我通常会使用反射器来查看代码,但在这种情况下,程序集是动态的并且仅在内存中。有没有办法将动态程序集保存到磁盘以便我可以反映它们?

编辑/我的答案:

哇,花了一段时间才回到这个。不幸的是,我在最初的问题中遗漏了一个重要的部分。

重要一点:我正在使用Ayende 的 RhinoDSL 库正如他在书中所建议的那样。我可以访问 DslEngine 子类中的 boo 编译器,如下所示:

public class JobEngine : DslEngine
{
    protected override void CustomizeCompiler(Boo.Lang.Compiler.BooCompiler compiler, Boo.Lang.Compiler.CompilerPipeline pipeline, string[] urls)
    {
        pipeline.Insert(1, new ImplicitBaseClassCompilerStep(typeof (JobBase), "Prepare", "JobLanguage", "log4net", "Quartz"));
    }
}

为了改变最少并得到我想要的东西,我需要添加一行......

public class JobEngine : DslEngine
{
    protected override void CustomizeCompiler(Boo.Lang.Compiler.BooCompiler compiler, Boo.Lang.Compiler.CompilerPipeline pipeline, string[] urls)
    {
        compiler.Parameters.GenerateInMemory = false; // <--- This one.
        pipeline.Insert(1, new ImplicitBaseClassCompilerStep(typeof (JobBase), "Prepare", "JobLanguage", "log4net", "Quartz"));
    }
}

这导致编译器将程序集输出到我的 ~\LocalSettings\Temp 目录,然后我可以反映它。需要注意的是,进行该更改会导致程序的其余部分中断(RhinoDSL 无法再在内存中找到程序集,因为我将它们输出到磁盘),因此这仅作为调试工具有用。


查找 BooCompiler 实例化的位置,更改管道编译到内存 to 编译为文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以将动态程序集保存到磁盘? 的相关文章

  • 设置 runat=server 时输入名称和 id 发生变化

    在我的表单中 我需要插入 文本 类型的不同输入 输入必须是带有名称和 ID 的 html 控件 因为我将此表单发送到外部网址 对于验证 我在所有输入中执行 runat server 然后我可以使用 requiredfieldvalidato
  • .NET 内存不足故障排除

    在阅读了几篇有关 NET 技术中的内存的启发性文章后 Out of Memory 不是指物理内存 https learn microsoft com en us archive blogs ericlippert out of memory
  • 为使用 SSH.NET SshClient.CreateShellStream 执行的命令 (sudo/su) 提供子命令

    我正在尝试使用 Renci SSH NET 从 C Web 应用程序连接到远程 Linux 服务器并执行 shell 脚本 我想一个接一个地运行脚本 但不知道如何运行脚本并读取输出并将其存储在标签中 我已经尝试了下面的代码 但无法一行接一行
  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • Android 手机作为 GSM 调制解调器在 PC 上发送/接收短信?

    是否可以将 Android 移动设备用作 PC 上的 GSM 调制解调器 我正在 net下开发应用程序来发送 接收短信等 现在我想通过 USB 将我的 Android 设备连接到我的 PC 并将其用作 GSM 调制解调器来与其通信 这里是参
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 从 Excel 应用程序对象中查找位数(32 位/64 位)?

    是否可以从 Microsoft Office Interop Excel ApplicationClass 确定 Excel 是以 32 位还是 64 位运行 Edit该解决方案应该适用于 Excel 2010 和 Excel 2007 此
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • 在 C# 中读取/写入大型 XML 文件

    我正在开发一个带有 XML 数据库的应用程序 我有很大的 XML 文件 我必须在其中读取和写入数据 问题是我不想将整个 XML 文件加载到内存中 也不想因为性能问题而循环遍历整个文件 因为如果我将整个文件加载到内存中 这将影响应用程序性能
  • 如何使用命令行压缩指定文件夹

    你们能告诉我如何将指定的文件压缩到同一个 Zip 文件中吗 让我告诉我我的文件夹是如何填充的 任务调度程序有我的数据库的备份 并每天将它们保存到文件中 它每天创建 4 个数据库备份 这意味着每天会多出 4 个文件 因此 我需要将新创建的备份
  • 有条件地忽略属性序列化

    我有一个 Asp Net WebApi 项目 我想返回 Json 格式的产品列表和一个特定产品 这是我的产品型号 public class Product public int Id get set public string ShortS
  • 在 Android 中动态填充年份的微调器?

    我一直在绞尽脑汁试图让它发挥作用 我想动态地将 1900 年到当前年份的年份输入到旋转器中 我认为使用 XML 定义的数组不可能做到这一点 但是我可以使用数组适配器来做到这一点吗 这是我到目前为止所拥有的 ArrayList
  • 在存储库模式中按 ID 进行过滤是否是不好的做法

    我正在使用 ASP NETMVC4 with 实体框架5 基本上每个控制器操作结果按登录用户的公司 ID 过滤数据库结果 我刚刚开始实现存储库模式来返回模型 而不是直接从控制器过滤 DbContext 将companyID传递到存储库中以过
  • 什么是 .NET 程序集?

    什么是 NET 程序集 我浏览了网络 但无法理解其定义 程序集是 net 应用程序的最小部署单元 它可以是一个dll or an exe 它主要有两种类型 私人集会 dll 或 exe 是一个应用程序的专有财产 一般存放在应用程序根文件夹中
  • 泛型和实现 IComparable

    我对泛型非常陌生 我正在尝试编写一个简单的类 它将是泛型的 但也允许对字符串成员变量的一些描述进行排序 目前我有一个基本类 但是当我尝试实现接口成员 CompareTo 时 我在顶部收到一个错误 告诉我它尚未实现 这里有什么问题呢 usin
  • 避免使用一本字典的更好代码 - 区分大小写问题

    我有以下方法用数据读取器的值填充字典 数据读取器字段和传递给方法的属性之间可能存在大小写不匹配的情况 在下面的方法中 我首先将属性转换为小写以解决此问题 这会导致两个字典 有没有更好的方法用一本字典来实现这一目标 private Dicti
  • 如何从 vbScript 调用 .NET 代码 (C#/vb.net)?

    我想我可以编译一个 C DLL 然后将其公开为 COM 对象 以便可以从 VBscript 中 CreateObject 我只是不确定执行此操作所涉及的步骤 做到这一点非常简单 但还有很多地方并不那么简单 这在很大程度上取决于您的类需要做什
  • 使用对象初始化语法的操作顺序

    我使用对象初始值设定项语法设置属性的顺序是否以完全相同的顺序执行 例如 如果我这样做 var s new Person FirstName Micah LastName Martin IsLoaded true 每个属性都会以相同的顺序设置
  • 如何检查日期时间是否发生在今天?

    有没有比下面的代码更好的 net 方法来检查 今天 是否发生了 DateTime if newsStory WhenAdded Day DateTime Now Day newsStory WhenAdded Month DateTime

随机推荐

  • Swift 3 中的 NSNotifications

    新通知目前在 Swift 3 中不起作用吗 我在做 NotificationCenter default post name DidTouchParticleView object self particle as AnyObject 在自
  • 为什么 NSManagedObjectContext 队列在主线程上执行?

    当我发送一个performBlock给我的 MOC 类型的消息NSPrivateQueueConcurrencyType 像这样 self privateManagedObjectContext performBlockAndWait if
  • 如何在Fragment内的WebView中添加“返回”功能?

    更新 解决了 问题与我的 Viewpager 有关 而不是与 WebView 有关 我正在尝试向我的应用程序添加 返回 功能WebView这是在一个Fragment 但我不知道如何 public final class TestFragme
  • 默认模型绑定器的 MVC 本地化

    我目前正在尝试找出如何本地化 MVC 生成的错误消息 让我使用默认的模型绑定器作为示例 以便我可以解释问题 假设我有一个表单 用户可以在其中输入他们的年龄 然后用户在表单中输入 十 但没有得到预期的错误 年龄必须在 18 岁至 25 岁之间
  • Spring security自定义AuthenticationException消息

    您好 我需要在 Spring 安全登录表单中添加一个新的异常 除了我想要自己的错误消息 到目前为止它显示 错误的登录 密码 之外 一切都运行良好 我已覆盖用户名密码身份验证过滤器中的默认尝试身份验证方法 Override public Au
  • 从 firestore 获取数据时使用 async forEach 循环

    我的 firestore 数据有点像这样 Support userid abcdxyz message hello 我正在使用 nodejs 来获取我的数据 我还想显示发送此消息的人的电子邮件地址和姓名 所以我正在使用以下函数 databa
  • 未解决的外部噩梦

    各位行业资深人士 大家好 我是一名大三学生 即将开始我的第一次暑期编程实习 但我的能力已经超出了我的能力范围 我工作的公司从另一家公司购买了一个庞大的应用程序 该公司自 90 年代初以来一直在慢慢扩展和修改它 该解决方案包含超过 200 0
  • Java GUI 中的旋转方形面板

    我想知道是否可以实现一个方形但旋转 90 度的 GUI 面板 可能是 JPanel 显然 将有一个包含此面板的顶级容器 并且从视觉上看 主面板就是其中的旋转方形面板 更具体地说 我会将一个面板 称为 A 分成 4 个相等的方形子面板 并用
  • 智能手机网页设计 - 像素大小

    我需要有人帮助澄清我对高密度屏幕新手机像素大小的理解 从那时起 它就给我的网页设计带来了麻烦 我对智能手机的最初理解是像素尺寸大约为 480 x 320 这使得设计变得容易 因为像素仍然是相同的像素 然而 一些智能手机比这个多一倍 或更多
  • 如何“平滑”数据并计算线梯度?

    我正在从测量距离的设备读取数据 我的采样率很高 因此我可以测量距离 即速度 的较大变化 但这意味着 当速度较低时 设备会提供许多相同的测量结果 由于设备的粒度 这会产生 阶梯式 曲线 我需要做的是平滑曲线以计算速度 接下来我需要计算加速度
  • 如何使用Java代码将图像权限模式更改为777?

    我想使用Java代码为图像文件赋予权限模式值 777 我怎样才能用Java给出这个呢 因为我无法删除默认权限模式 664 的图像 您可以使用 exec 方法运行外部命令来执行 chmod Runtime getRuntime exec ch
  • 单个 Jekyll 网站中的多个博客

    有没有一种方法可以让一个 Jekyll 网站拥有多个博客 我目前想在一个网站上拥有两个博客 我是该页面的作者http www garron me blog multi blog site jekyll html 考虑到您需要单独的档案页面以
  • 从 ASP.NET 生成 Word 文档的最佳解决方案是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想从我的 ASP NET 应用程序生成一个 Word 文档 目前我们显示 议程列表 其中包含议程信息和所有项目 主题 该页面需要能够在word中打
  • $(window).scroll(function() 在 Firefox 上不起作用?

    为了像 facebook 或 twitter 在其网站上那样加载页面 向下滚动 我用 jquery 尝试过 window scroll function if window scrollTop document height window
  • 传输编码:Windows Phone 中的分块

    我有一个带有 Transfer Encoding chunked 的服务器响应 HTTP 1 1 200 OK Server nginx 1 2 1 Date Mon 18 Feb 2013 08 22 49 GMT Content Typ
  • 如何合并两个不同的 Git 存储库?

    我有两个 Github 存储库 一个存储库位于远程服务器上 另一个存储库位于本地服务器上 它们都有不同文件和文件夹的不同提交历史记录 现在我想合并它们 以便我可以将它们作为一个存储库放在远程服务器上 请帮忙 我寻找了各种解决方案 建议如下
  • JS Promise - 立即从返回 Promise 的函数中检索一些数据

    谁能推荐一种从返回 Promise 的函数中立即检索数据的模式 我的 简化的 示例是 AJAX 预加载器 loadPage index html then displayPage 如果这是下载一个大页面 我希望能够检查正在发生的情况 并可能
  • 有没有办法确定理想的线程数? [复制]

    这个问题在这里已经有答案了 我正在做一个网络爬虫并使用线程来下载页面 我的程序性能的第一个限制因素是带宽 我永远无法下载它可以获得的更多页面 第二件事是我感兴趣的 我使用线程同时下载许多页面 但是当我创建更多线程时 会发生更多的处理器共享
  • R Dataframe 中的级别

    我从 csv 文件导入数据 并附加数据集 我的问题 一个变量是整数形式 有 295 个级别 我需要使用这个变量来创建其他变量 但我不知道如何处理这些级别 这些是什么 我该如何处理它们 当您使用 read table 或 read csv 您
  • 是否可以将动态程序集保存到磁盘?

    最近买了阿延德的书在 Boo 中构建 DSL 购买它 阅读它 太棒了 但是我遇到了一个实现问题 我想看看生成的代码是什么样的 我通常会使用反射器来查看代码 但在这种情况下 程序集是动态的并且仅在内存中 有没有办法将动态程序集保存到磁盘以便我