CLR 何时尝试加载引用的程序集?

2023-12-02

我想编写一个小型安装程序应用程序来安装网站并创建 IIS 虚拟目录。该应用程序应在 Windows XP/Server 2003 (IIS 6) 以及 Vista/2008 (IIS 7) 上运行。

问题是:对于 IIS 6,我们通过调用 WMI/Metabase API 创建虚拟目录,对于 IIS 7,有一个更好的 API:Microsoft.Web.Administration,但其程序集仅在 IIS 7 系统上可用。

天真的方法:

...
if (OperatingSystem == old)
{
    call metabase API...
}
else
{
    call Microsoft.Web.Administration...
}
...

很好,不是吗?但是,我如何确保在尝试加载 Microsoft.Web.Administration DLL 时不会在旧系统上崩溃?或者程序集是在第一次使用时刚刚加载的吗?何时首次使用调用程序集的方法?

我想,如果没有 CLR/.NET 规范保证某些确定性,测试就没有帮助。

我真的很期待听到您对此主题的经验、提示或解决方案。到目前为止,我还没有在网络上找到任何可远程使用的内容。


我无法在规范中找到明确的答案,说明何时必须加载程序集,何时不得加载程序集。然而,根据

http://msdn.microsoft.com/en-us/magazine/cc163655.aspx(“启动时加载更少的模块”部分)

以及 www.informit.com/articles/article.aspx?p=30601&seqNum=5 上的书籍摘录(摘自“Essential .NET,卷 I:公共语言运行时”)。

仅当需要编译方法时,CLR 的 JIT 才会加载所需的程序集。因此,您应该将 Microsoft.Web.Administration... 的任何使用转移到单独的方法中,仅当您确信系统上存在该程序集时才调用该方法。那是,

   setup()
   { 
       if ( Operating.System == Old )
          call metabase API
       else
          doIIS7Setup()
   }

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

CLR 何时尝试加载引用的程序集? 的相关文章

随机推荐

  • 我可以将 Zend PDT (eclipse) 链接到浏览器操作吗?

    是否可以在 Eclipse 中配置 Zend PDT 调试器 以与 Eclipse 的 Java 调试器类似的方式从浏览器操作中命中断点 IE 设置断点 启动调试器 浏览站点 然后在遇到断点时进入断点 我可以调试单个脚本和网页 但是我正在尝
  • 如何解析网页

    我试图从 EnviroCanada 天气页面中提取以下内容 我试图按照以下方式获取每小时的数据 时间 大腿 特洛 湿度 7 00 23 23 22 9 22 9 30 提取的 HTML 页面 tr td class text center
  • 如何在 XSLT 中保留元素的开始标记内的空格

    为了避免将敏感信息提交到 SCM 存储库 我编写了一个 XSL 样式表 用于从 ASP NET 中删除连接字符串密码Web config文件 它实现了我删除密码的目标 但它也会影响元素开始标签内的空白 如果可能的话 我想保留这个空白 例如
  • 如何通过 C# 代码更改已过期的 sql server 密码?

    当您使用 SqlConnection 连接到 MS Sql Server 时 如果密码已过期 您将收到 SqlException 编号 18487 或 18488 如何在连接尝试期间更改代码中的用户密码 使用静态SqlConnection
  • 如何允许其他人访问由 Google Apps 脚本制作的网络应用程序?

    我从 Google Apps 脚本部署了一个网络应用程序 但其他人似乎无法运行它 当我登录谷歌时 它运行得很好 我不断得到 要求分享 电子邮件 即使我将源脚本设置为 在网络上公开 执行应用程序 被设定为 用户访问网络应用程序 该应用程序的链
  • Azure Pipelines 第二个作业找不到第一个作业的结果

    我正在开始使用 azure pipelines yml 我想在同一阶段有两份工作 一个用于构建解决方案 另一个用于运行单元测试 问题是第二个作业执行了脚本步骤 但没有找到文件夹Release前一个应该已经创建 trigger master
  • PHP simplexml_load_file 捕获 403

    我正在使用以下 PHP xml simplexml load file request url or die url not loading I use status xml gt Response gt Status gt code 检查
  • Laravel RESTful 控制器参数

    我使用 Laravel 4 和 Angular JS 来使用 RESTful 控制器处理 http 请求 我有一个 RESTful 控制器 UserController具有以下功能 public function getIndex is R
  • 怎样清除手指上的油漆?

    我是 android 新手 我在 Api Demo 中的 FingerPaint java 的帮助下使用手指准备了一个绘画视图 它工作正常 同一个视图包含一个按钮 清除 如果我们单击按钮绘画将被清除 空屏幕和一个按钮 我的问题是如何清除绘画
  • 如何避免Java中的ResultSet已关闭异常?

    一旦我的代码到达我的while rs next 循环它产生ResultSet是关闭异常 是什么原因导致此异常以及如何纠正它 EDIT 我注意到我的代码中正在嵌套while rs next 与另一个循环 rs2 next 两个结果集都来自同一
  • iOS Safari Mobile 不会仅触发一次 pageshow

    iOS Safari 在以下情况下似乎不会触发 pageshow 事件 假设我有 3 页 页面 A 在 pageshow 事件中有一些代码 Page B Page C 用户导航自A gt B 按后退按钮 页面显示触发正常 然后 用户导航到另
  • 如何在 Spring Boot 中获取 DispatcherServeletInitializer 功能

    我们正在寻求将我们的项目迁移到 Spring Boot 但目前尚不清楚如何复制其功能AbstractAnnotationConfigDispatcherServletInitializer在 Spring Boot 中 public cla
  • 如何使用 PHP 更新/编辑 JSON 文件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 这是我的JSON activity code 1 activity name FOOTBALL activity code 2 activity name CRICKET 我需要更新
  • 为什么 JLabels 上的图像图标在运行时会像素化,但在设计模式下却不会?

    左 设计模式 右 运行 每次我运行程序时 图像图标都会变得像素化或模糊 而且我在任何地方都找不到同样的问题 这些图像在设计模式下看起来不错 有谁知道这个问题的解决方案 我正在使用这行代码来获取图像 private Image img hom
  • 如何在Matlab中从矩阵中提取非垂直列

    我有矩阵 A 和向量 b 它指定要为矩阵的每个相应行提取的元素的列索引 例如 A 1 2 3 4 5 6 7 8 9 b 1 3 2 我想要c 1 6 8 关于输出 如何实现这一目标 I tried A b 但它不能按我的需要工作 可能有一
  • Rust 的泛型 FromStr 对象可以做什么?

    Rust s str类有一个parse方法返回一个FromStr目的 parse是模板化的 因此正在解析的类型str可以手动指定 例如 3 parse
  • 在运行时更改已部署应用程序的任务栏图标

    我想更改任务栏图标以在收到新邮件时通知用户 就像 Outlook 收到新邮件时通知用户一样 我已经在网上搜索解决方案 这都是关于更改窗口图标 如下所示 Uri iconUri new Uri Resources envelop ico Ur
  • 为什么for循环要用分号?

    在大多数 C 派生语言 C Java Javascript 等 中 for循环具有相同的基本语法 for int i 0 i lt 100 i code here 为什么此语法包含分号 而分号通常保留用于行尾 另外 为什么后面没有分号i 这
  • 如何检测iPhone中特定声音的声音频率?

    我正在开发一个应用程序 我想检测声音频率 如何检测特定声音 例如狗的声音 的频率 有人有教程或一些示例代码吗 检测单个频率 甚至计算单个 FFT 都不是区分狗吠声与相同音量的其他常见声音的可靠方法 可能有效的方法是使用 MFCC 进行声音指
  • CLR 何时尝试加载引用的程序集?

    我想编写一个小型安装程序应用程序来安装网站并创建 IIS 虚拟目录 该应用程序应在 Windows XP Server 2003 IIS 6 以及 Vista 2008 IIS 7 上运行 问题是 对于 IIS 6 我们通过调用 WMI M