如何预加载 .net 程序集

2024-02-08

在我的工作中,我们正在使用.net Framework 4开发不同的应用程序。所有应用程序都使用我们开发的通用程序集,例如data.dll中的数据层。这些应用程序驻留在网络驱动器上并直接从那里启动。

大多数大型应用程序第一次启动(冷启动)需要一段时间,例如 4-5 秒。随后的发射速度要快得多,几乎是瞬时的。我认为这与网络无关,因为最大的组件约为 900KB,而且我们使用的是千兆网络。

我想创建一个在计算机启动时启动的服务,并加载特定目录下的所有 .net 程序集。我希望当用户启动程序时,所有必需的程序集都已被加载并“JITed”,因此启动应该更快。

我知道如何创建服务,但我想知道这是否可行,因为我对 CLR 的理解非常有限...此外,执行诸如 Assembly.LoadFrom(fileName) 之类的操作可以预加载程序集吗?如果我有一段时间没有启动任何程序,它们会保持加载状态还是在一段时间后自行卸载?如果我更改已加载的程序集会发生什么情况?

基本上,我想做类似的事情OpenOffice 快速入门 http://wiki.services.openoffice.org/wiki/Documentation/OOoAuthors_User_Manual/Getting_Started/Using_the_Quickstarter_under_Windows,但是对于我们自己的应用程序框架。

感谢大家!!!

- -编辑 - -
这很有趣... http://msdn.microsoft.com/en-us/library/43wc4hhs.aspx似乎以正确的方式进行,但不确定我是否理解一切......


您已经知道 JIT 编译不是问题,这也会减慢第二次启动的速度。您所要做的就是获取文件系统缓存中的 DLL。这样当您稍后启动程序时,它将使用缓存中该 DLL 的副本,而不是通过网络连接驱动器来查找它。这需要时间。 Office Quick Start 使用同样的技巧。如果所有这些预装的东西不再适合,不确定谁会赢。

只需创建一个 Winforms 应用程序,这样您就不会获得窗口,然后调用 Assembly.Load() 来加载程序集,调用 File.ReadAllBytes() 来确保整个内容都在缓存中。在启动文件夹中放置该程序的快捷方式。您提到的那个程序集足够大,足以在 Ngen.exe 的热启动中得到提升。不过,这必须在每个单独的工作站上运行。

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

如何预加载 .net 程序集 的相关文章

随机推荐

  • 在 IB 中使用自动布局,如何以编程方式将 UIView 放置在屏幕中央?

    我有一个 UIView 我想在主视图上水平居中 然后在主视图上垂直居中 减去大约 14 像素 如果我用 IB 设置它 它可以在 Retina 3 5 上运行 但在 Retina 4 上运行时 它当然会偏离大约 40 像素 我认为最好的解决方
  • 请求被中止:无法创建 SSL/TLS 安全通道。

    我想实现 Paypal dodirect 方法 让用户可以直接在我的网站上付款 而不是重定向到用户 因此我已将此 URL 添加为https www sandbox paypal com wsdl PayPalSvc wsdl https w
  • 安全注意事项 - ChromeDriver - Chrome 的 Webdriver

    我想知道是否有人了解有关此声明所涉及的使用 chromedriver 的具体风险的更多信息 如果可能 请使用无法访问敏感本地或网络数据的测试帐户运行 ChromeDriver ChromeDriver 永远不应该使用特权帐户运行 想知道使用
  • 如何开始使用 Delphi 创建我自己的类?

    我已经发布一个问题 https stackoverflow com questions 11270972 declare locally or globally in delphi几天前 答案告诉我创建自己的课程 我是一名来自 OOP 时代
  • 在 Rust 中确定 DynamicImage 的位深度

    如何确定一个位深度image DynamicImage生锈了 我在用着fltk rs https docs rs fltk 0 11 6 fltk function https docs rs fltk 0 11 6 fltk image
  • javascript中双精度到字节数组的转换

    我正在尝试将一些 Java 代码转换为我正在开发的应用程序所需的 JavaScript 我被困在一个类及其方法上 这些方法将 double 类型的变量转换为 long 然后将 long 转换为由表示该 long 数字的 8 个字节组成的字节
  • 为什么不总是使用 GUID 而不是整数 ID?

    使用 GUID 有哪些缺点 为什么不总是默认使用它们呢 其一 整数的连接速度要快得多 当处理数百万行时 这一点尤其重要 对于两个来说 GUID 比整数占用更多的空间 同样 在处理数百万行时非常重要 对于三个来说 GUID 有时采用不同的格式
  • AVI 文件的 Flash 视频播放器(免费用于商业用途)

    是否有可免费用于商业用途且能够播放 AVI 文件的 Flash 视频播放器 JW Player 是不可能的 因为在自述文件中它指出公司的使用被视为商业用途 需要不同的许可证 Flash 本身并不处理 AVI 容器格式 它只能播放符合某些特定
  • 如何在 Flutter 移动应用程序的 API 调用中传递基本身份验证凭据?

    我正在开发一个简单的 Flutter 移动应用程序 需要调用使用基本身份验证的 API 我可以使用电子邮件和密码凭证来访问 Postman 中的 API 它会在执行请求之前以 Base64 格式对电子邮件和密码进行编码 我假设用 分隔 我不
  • 为什么我的 RSS 源会重复某些条目?

    当使用 Thunderbird 提要阅读器阅读我的 RSS 提要时 某些条目是重复的 谷歌读者 https en wikipedia org wiki Google Reader没有同样的问题 这是错误的 feed http plcoder
  • Oracle 中的视图和物化视图有什么区别?

    Oracle 中的视图和物化视图有什么区别 物化视图基于磁盘 并根据查询定义定期更新 视图只是虚拟的 每次访问时都会运行查询定义
  • 获取对象类型并相应地分配值

    我有一个数组列表不同类型的值其中 第一个值 gt string 第二个值 gt datetime 第三个值 gt boolean第四个值是int 我如何找到它们的类型并相应地分配值 任何帮助将不胜感激 这是我的代码 foreach obje
  • 有没有办法将类作为参数传递给 JAXB XMLAdapter 或从另一个类访问 Getter 方法

    我正在尝试创建一个XMLAdapter我的一个对象的类 我需要访问Getters来自另一个类 以便可以从该类的 Getters 填充某些对象 但我无法这样做 基本上 我想访问我的Child class Getter内的方法XMLAdapte
  • 测试文件/目录是否只读

    好吧 我是一个 C 新手 如何测试一个文件在 Windows 上是否只读 我尝试使用 GetFileAttributes 函数进行一些操作 但无济于事 给定文件的路径 测试它是否只读的正确方法是什么 Edit 所以我现在还停留在这一点上 我
  • 如何在Flutter中绘制带有尖角三角形的线?

    我正在考虑实施以下设计 如何实现如上图所示的线上的三角形凹凸 我是颤振的新手 对如何开始这方面一无所知 很简单 你只需要了解如何使用剪刀即可 方法如下 你需要使用ClipPath override Widget build BuildCon
  • AngularJS 两个 http get 在一个控制器中会出现问题

    我在一个控制器中有两个 http GET 有时它可以工作 并且其中两个正在工作 有时只有一个 http Get 可以工作 有时它们都没有显示 有什么建议么 controller nextSidorAdminCtrl function sco
  • Firebase 数据库安全,无需 Firebase 身份验证

    我在 Play 商店上发布了一个应用程序 我想在该应用程序中实现 firebase 我已阅读所有文档 但有两个疑问 如果有人在我的应用程序中使用 apk 反编译器并获取 google services json 他们可以对数据库做任何他们想
  • 如何将 CKFinder 与 Laravel 集成?

    我正在尝试将 CKFinder 与 Laravel 集成 我已经完成了 95 左右 我可以让一切正常工作 除了CheckAuthentication功能 我必须做到return true无论上传是否有效 我尝试做的是在 config php
  • 如何获取按计数列排序的组

    很难用简单的英语问这个问题 所以我会展示我正在尝试做的事情 这是我的 SQL 代码 select top 100 Name COUNT Name as total from ActivityLog where Timestamp betwe
  • 如何预加载 .net 程序集

    在我的工作中 我们正在使用 net Framework 4开发不同的应用程序 所有应用程序都使用我们开发的通用程序集 例如data dll中的数据层 这些应用程序驻留在网络驱动器上并直接从那里启动 大多数大型应用程序第一次启动 冷启动 需要