随着.NET技术的不断发展,应用程序的部署方式也在不断进化。从传统的安装程序到XCOPY部署,再到单文件复制部署,开发者一直在寻求更简单、更高效的部署方案。本文将探讨.NET应用程序的单文件部署技术,特别是NAR档案的创建和使用,以及CLR在.NET 2.x中的新特性。
.NET的心脏——公共语言运行时(CLR)是Windows的标准组件,它不仅可以用于.NET应用程序,还可以用于扩展非托管的Windows应用程序,使其具备.NET的功能。自.NET 2.0以来,CLR提供了更多的自定义选项,例如指定CLR加载程序集的位置、控制垃圾回收(GC)的行为,以及处理策略等。通过在应用程序中托管CLR,可以扩展其功能,但实现这一目标的过程并不总是像预期的那样简单,尤其是在安全性方面可能会遇到一些挑战。
NAR档案是.NET应用程序的一种新型部署方式。它本质上是一个ZIP文件,其中包含一个可选的XML清单文件,该文件通知加载器需要加载的内容,以及应用程序的所有内容,如app.config文件和程序集。NAR档案的加载器仅支持.NET 2.x,不支持.NET 1.x。
NAR档案的出现,意味着今天可以使用XCOPY部署.NET应用程序,而未来可能会实现单文件复制部署。
.NET2.0引入了许多有趣的新特性,这些特性使得创建用于处理档案的功能成为可能。例如,CLR现在可以指定加载程序集的位置,这是NAR加载器使用的一个特性。此外,还可以自定义垃圾回收的行为或策略。通过在应用程序中托管CLR,可以扩展其功能,但实现这一目标的过程并不总是像预期的那样简单,尤其是在安全性方面可能会遇到一些挑战。
NAR加载器由三个部分组成:
将在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文件扩展名处理。