.NET 应用程序的单文件部署

随着.NET技术的不断发展,应用程序的部署方式也在不断进化。从传统的安装程序到XCOPY部署,再到单文件复制部署,开发者一直在寻求更简单、更高效的部署方案。本文将探讨.NET应用程序的单文件部署技术,特别是NAR档案的创建和使用,以及CLR在.NET 2.x中的新特性。

.NET的心脏——公共语言运行时(CLR)是Windows的标准组件,它不仅可以用于.NET应用程序,还可以用于扩展非托管的Windows应用程序,使其具备.NET的功能。自.NET 2.0以来,CLR提供了更多的自定义选项,例如指定CLR加载程序集的位置、控制垃圾回收(GC)的行为,以及处理策略等。通过在应用程序中托管CLR,可以扩展其功能,但实现这一目标的过程并不总是像预期的那样简单,尤其是在安全性方面可能会遇到一些挑战。

NAR档案

NAR档案是.NET应用程序的一种新型部署方式。它本质上是一个ZIP文件,其中包含一个可选的XML清单文件,该文件通知加载器需要加载的内容,以及应用程序的所有内容,如app.config文件和程序集。NAR档案的加载器仅支持.NET 2.x,不支持.NET 1.x。

NAR档案的出现,意味着今天可以使用XCOPY部署.NET应用程序,而未来可能会实现单文件复制部署。

CLR的新特性

.NET2.0引入了许多有趣的新特性,这些特性使得创建用于处理档案的功能成为可能。例如,CLR现在可以指定加载程序集的位置,这是NAR加载器使用的一个特性。此外,还可以自定义垃圾回收的行为或策略。通过在应用程序中托管CLR,可以扩展其功能,但实现这一目标的过程并不总是像预期的那样简单,尤其是在安全性方面可能会遇到一些挑战。

使用代码

NAR加载器由三个部分组成:

  1. 非托管的VC++宿主程序,用于CLR。
  2. 托管的C#域管理器。
  3. 一个测试应用程序的示例NAR档案,测试了.NET应用程序的大多数方面,如卫星程序集、私有搜索路径、多模块程序集等。

将在bin目录中找到Debug和Release构建的压缩文件。从源代码构建加载器将构建所有三个部分。构建通常应该没有问题,但如果失败,很可能需要自定义其中一个自定义构建步骤(项目:NARTestModule、NARTest、NARLoaderManager、NARLoaderMain,以及NARLoaderMain中的NARLoader.h文件)。

新特性

这个版本的加载器现在能够创建自运行档案,包括使用自定义图标的可能性。现在,可以将应用程序的程序集打包到一个单独的.exe文件中并部署它。密码保护的、强AES加密的档案现在也是可能的。使用此功能可以混淆应用程序程序集和/或控制应用程序的使用。

如果档案包含ZIP注释,可以在应用程序启动时显示。它可以用来显示许可协议或其他信息。

兴趣点

托管CLR是扩展非托管应用程序的好方法,但也是扩展.NET环境本身的机会。使用CLR托管接口(大多数时候)是直接的,但有时MSDN上的可用文档缺乏一些澄清提示。在开发过程中,fuslogvw.exe是一个宝贵的调试工具。通过使用NAR档案,可以简化应用程序部署。

截至2006年10月26日,最新稳定版本为1.2。

1.2

2006.10.26

增加了对强AES加密、密码保护档案和档案注释的支持。

1.1

2006.08.17

增加了对自运行档案的支持,包括自定义图标。

1.0a

2006.08.03

允许安装和卸载加载器CAS代码组,以及.nar文件扩展名处理。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485