.net打包经验小结

来源:互联网 发布:js取指定时间的时间戳 编辑:程序博客网 时间:2024/06/07 01:11
 在我们建立完一个WEB应用程序后,我们就要考虑如何进行部署和发布。一般情况下,尽可能将安装简单化,以使用户有非常好的用户体验。但有的 情况下,可能对安装程序的要求比较高,比如有时要将一些安装配置信息写到注册表中去。而对于一个WEB应用程序,该如何安装部署呢?这和安装部署 一个普通的WINFORM下的应用程序有些不同。以往,对于WEB应用程序的安装部署总是十分困难的,但自从ASP.NET 1.1起,直到现在出现的ASP.NET 2.0,安装部署WEB应用程序将变得十分简单方便。本文将着重介绍在ASP.NET 2.0下,如何使用visual studio .net express beta/visual studio 2005,对WEB 应用程序进行安装部署。

  首先,我们看下,WEB应用程序一般包括什么。一个WEB应用程序,一般包括有WEB页面(.aspx文件和HTML 文件),各类配置文件(如web.config),各类相关的资源文件,还有各类包括业务核心代码的源代码文件,这些文件一般会放在WEB服务器的一个虚拟目 录下。由于ASP.NET是采用编译架构的,因此还包括编译后的各类DLL文件,这些DLL文件放在BIN目录下。对于部署WEB应用程序,在.NET 2.0中,可以 采用以下的几种方法:

  1、使用XCOPY部署

  2、使用Visual studio的Copy Web Site功能部署

  3、使用 visual studio的Precompilation预编译部署

  下面对上述的三种方法分别予以介绍:

  使用XCOPY部署

  首先,我们先使用visual studio express 建立一个WEB SITE,选择VB.NET或者C#,之后建立一个名为deployment的应用。在这个应用中,由于我们的 目的是着重安装部署,所以可以随便拉一个按钮,然后在这按钮的onclick事件中,写入一些屏幕输出之类的语句就可以了。
当编译该程序后,我们开 始使用XCOPY来部署应用程序。 XCOPY是.NET在应用程序的部署方面的最简单方法。XCOPY简单地将你的WEB应用程序的所有文件拷贝到目的服务器的 指定路径下,比如,使用命令如下:
xcopy d:/intetpub/wwwroot/myprojects/developer/deployment c:/temp /e /k /r /o /h /I

  执行后,结 果如下图,会将当前的应用deployment的所有文件拷贝到c盘的TEMP目录中去,之后,在IIS中创建虚拟目录,指向该目录就可以了。关于XCOPY的使用 方法,请参考具体的相关命令帮助。

  使用Visual studio的Copy Web Site功能部署

  Visual studio的Copy Web Site功能,可以很方便地让我们进行WEB应用程序的 部署和安装。使用该功能,可以将WEB工程复制到同一服务器或者其他服务器上,或者FTP上。但要注意的时,使用该功能时,仅仅是将文件复制到目的 路径中去,并不执行任何的编译操作。
在Visual studio express 中,选择web-site菜单中的copy web site,将出现下面的对话框:

  其中,左边部分是源文件的路径(source web sites),右边部分是你将要部署的目的路径。留意一下右边的MOVE FILES下的下拉选择框,里面提供了 三种文件的复制方式供你选择:

  1、All source Web files to remote Web site(所有的WEB文件复制到远程的WEB站点中)

  2、All remote Web files to source Web site(所有的远程WEB站点文件复制到本地站点)

  3、Synchronize source and remote Web sites(同步本地WEB站点和远程WEB站点的文件)。

  在使用时,先点击CONNECTING TO…旁边的小图标,弹出的对话框如下图 :

  这里可以选择将你本地的WEB应用程序复制到什么地方,比如是选择FILE SYSTEM(本地文件系统),LOCAL IIS(本地的IIS服务器 ),FTP站点,或者是远程站点。在选择好目的路径后,就可以点选"COPY WEB SITE"按钮,系统会自动将应用系统的文件复制到目的路径中去,并显示 复制后的日志记录。
 使用Visual Studio的Precompilation预编译部署

  ASP.NET 2.0中的一大新特性,是采用了动态编译,使到可以在编辑或者 保存修改后的网页后,直接在浏览器中访问,而不需要再次编译,但这有个缺点,编译过程将导致第一次请求 ASP.NET 页面时的响应速度比后续请求慢, 而在ASP.NET 2.0中,另外提供了预编译的功能(Precompiling),使用该功能,可以立即将结果显示给第一个用户,并且可以在批编译过程中检测到 ASPX 页面中的任何错误。但是,批编译确实会延长应用程序的启动时间,而且必须内置在 web.config 文件中。

  而ASP.NET 2.0的预编译 ,又分为两种,第一种是In-place编译,该编译只需要在浏览器中输入http://站点名称/WebApp名称/PreCompile.axd,系统就会将WebApp里面所有的页面 先给编译一遍,运行后如下图:

  在ASP.NET 2.0中,提供一种更新的编译部署方式,叫Precompilation deployment(部署预编译)。Net Framework 2.0提供了一个命令行的工具 (aspnet_compiler.exe),可以将WebApp中所有的代码、页面(包括HTML)、静态文件全部编译进dll,然后进行部署,得到的目标系统中,只包含编 译后的dll,甚至连HTML页面文件都是不存在的,大大增强了系统的安全行,但是浏览起来和普通的ASP.NET 应用没有任何区别。使用方法如下 :

  aspnet_compiler.exe一般在WINNT目录下的.net framework 2.0子目录下可以找到,使用格式为:

aspnet_compiler -v /-p

  其中,websitename为你要部署的web 应用程序的虚拟目录名,为你要部署的web应用程序的物理路径,〈destination>为即将部署的应用程序的目标物理路径,比如 :

aspnet_compiler -v /Deployment
-p c:/inetpub/wwwroot/myprojects/Developer/deployment c:/compiled

  则所有的文件都会被部署预编译到c盘的compiled目录下,而且该目录下,你会发现没有任何的代码文件和HTML文件了。

  小结

  本文简单介绍了在ASP.NET 2.0中,提供的三种对WEB应用程序进行部署的方式,并介绍了它们各自的特点 。而对于.net 2.0中的更深入的讨论部署安装的问题,请参考MSDN。

 

小结:经过一个多月的项目开发感觉很疲惫,结尾客户让我进行部署,于是找了些资料,试验了几次,设置了多个项目的打包,实际中我采用的是Precompilation预编译部署方式,此法较为安全,打包的时候将你需要的dll和相应的aspx页面文件打包进去即可,但是安装部署后要注意.net版本,否则将出现分析器错误信息: 无法识别的配置节“connectionStrings”错误异常信息,修改后系统安装部署正常.有时候心情好的时候较快容易发现解决问题,心情不好真的很糟糕.尤其是面临一些很糟糕的客户.最后提供几个资料的链接及转贴  :)

1、在打包的时候自动提示用户安装.net框架

2、如何给ASP.net指定安装目录?

3、创建桌面快捷方式

4、提示用户输入序列号

5、SQL数据库部署

相关地址链接:

http://gistoy.cnblogs.com/archive/2005/12/08/292882.aspx

asp.net 部署数据库、开始菜单、桌面快捷方式实例

[上]http://www.cnblogs.com/adandelion/archive/2006/02/12/aspnetdatabasestartmenue.html

[下]http://adandelion.cnblogs.com/archive/2006/02/12/329132.html

Microsoft Visual Studio .NET 2003 引导程序插件

http://www.microsoft.com/downloads/details.aspx?FamilyID=627921a0-d9e7-43d6-a293-72f9c370bd19&DisplayLang=zh-cn

Asp.net与SQL一起打包部署安装

http://www.soft180.com/article/1/3/2006/20060217695.html

部署.net平台的程序

http://blog.csdn.net/zhzuo/archive/2005/05/31/385140.aspx

.NET 部署指南

http://www.uml.org.cn/net/netbushu.htm

 

搜索关键字:自定义 MSI 安装

转贴:

 部署用.net写的程序时客户系统需要安装对应版本的.net Framework,而VS.NET自带的安装程序项目没有提供一起打包框架的功能,这一点让许多开发者觉得不爽,在csdn论坛上也有人提及如何方便的把.net程序部署到没有安装框架的windows系统上。几个月前下载了MicrosoftVisual Studio .NET 2003 引导程序插件(其实这个微软早在2003年底已经提供了,但是我一直没有发现)。前段时间把这个插件安装了一下,发现vs.net 2003的菜单和工具栏里面都没有找到对应的命令,觉得很奇怪,因为像WMIvs.net2003插件安装上后在服务器资源管理器里面就会显示,所以一直以为有问题,后来也就没有去关心它。

上个月,我手上刚好有一个.net应用程序完成需要打包,结果惊奇的发现在安装文件的同级目录下一下子多出了好几个文件,终于明白是怎么一回事了。
下面是编译后的文件列表:
Config.ini            --安装配置文件
DotmanagementServer Installer.msi         --msi安装程序
dotnetfx.exe         --.net1.1 framework
langpack.exe        --语言包
Settings.ini          --设置文件
Setup.exe             --主安装程序
 
Config.ini文件的内容如下:
[config.ini]
IDS_NOT_SINGLE_INSTANCE=已有另一版本的安装程序正在运行。该应用程序一次只能运行一个版本。
IDS_DIALOG_CAPTION=%s安装
IDS_SINGLE_INSTANCE_FAIL=CreateMutex无法对单个的实例检查分配句柄。
IDS_SETUP_FAILURE=%s安装失败。如果问题继续存在,请与产品支持人员联系。
IDS_DEFAULT_PRODUCTNAME=应用程序
IDS_SETTINGS_INIT_FAILURE=安装设置文件'%s'在解析时出错,或者无法定位该文件。
IDS_CREATE_PROCESS_FAILURE=下列命令行的 CreateProcess 操作失败: %s
IDS_INSUFFICIENT_PRIVILEGES=运行 %s 安装程序要求具有本地系统管理员的权限。安装程序现在退出。
IDS_DIALOG_TEXT=单击“确定”开始安装 %1 。单击“取消”退出安装。
IDS_ERROR_CAPTION=%s安装错误
IDS_VERSION_DETECT_FAILED=%1的版本检测失败。请确保安装程序存在于指定位置。%n%n返回消息: %2
IDS_MSI_NOT_FOUND=无法定位产品安装程序'%s'。安装程序现在退出。
IDS_REBOOT_QUERY=安装完成。现在重启吗?
IDS_SETUP_SUCCEEDED=安装成功。
IDS_INVALID_LANGID_CAPTION=无效的语言包代码
IDS_FX_NOT_FOUND=无法定位 .NET framework exe 文件'%s'。安装程序现在退出。
IDS_INVALID_LANGID_MESSAGE=语言包代码 %s 无效。跳过...
IDS_LANGPACK_NOT_FOUND=无法定位语言包 %s。安装程序现在退出。
IDS_MDAC_NOT_FOUND=无法定位 MDAC exe 文件'%s'。安装程序现在退出。
IDS_FILE_NOT_FOUND=无法定位'%1'。安装程序现在退出。
 
Settings.ini文件内容如下:
[Bootstrap]
MsiPath=DotmanagementServerInstaller.msi
ProductName=服务聚合处理管理系统
MdacVersion=2.71
BootstrapFx=true
FxInstallerPath=
LanguageID=2052
BootstrapLangPack=true
LangPackInstallerPath=
BootstrapMdac=false
 
我在微软的VirtualPC 上的windows2000中对该程序进行了部署,整个安装过程如下:
点击安装程序 > 提示确定开始安装,取消推出安装 > 系统没有安装.net Framewrok提示是否希望安装 Mircrosoft .NET Framework 1.1软件包>没有安装IE 5.01或更高版本提示先安装IE高版本> .NET Framework 1.1安装>提示安装Microsoft .NET Framework语言套件> 安装应用程序向导 > 提示安装成功。
点击程序运行,一切象预想的那样。相信许多人已经在使用了,但更多人可能没有用过这个傻瓜式的插件。
网上在.net程序部署方面有许多相关的文章,下面几篇我认为是比较好的:
自定义 MSI 安装
http://www.microsoft.com/china/msdn/library/langtool/vsdotnet/usvs04j7.mspx
.NET程序部署到没有安装.NETFramework的机器上
http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/deployNETApp.mspx
部署ASP.NET的三大技术
http://tech.ccidnet.com/pub/article/c295_a68309_p1.html
使用 Visual Studio .NET 重新分发 .NET 框架
http://www.microsoft.com/china/msdn/library/netFramework/netframework/VCSdnnetdepvsredistdeploy.mspx
部署程序集
http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/misbasicinstincts.mspx
VS.NET中通过Setup andDeployment Projects来制作自己的安装程序的示例:
http://msdn.microsoft.com/library/en-us/vsintro7/html/vbconDeploymentScenarios.asp