WEB项目的分拆和布署

转载 2006年06月04日 21:00:00
WEB项目的分拆和布署
部分内容参考自:http://dev.csdn.net/article/21/21714.shtm
过程如下:
1,建立解决方案文件夹DEMO
2.建立空白解决方案DEMO
3.建立新的WEB根应用程序项目http://localhost:8040
4.建立虚拟目录WEB应用程序http://localhost:8040/modules删除掉其中的WEB.CONFIG和GLOBAL.ASAX
5,建立虚拟目录WEB应用程序http://localhost:8040/Controls删除掉其中的WEB.CONFIG和GLOBAL.ASAX
6.在解决方案文件夹下建立一个空白文件夹:Build,在其下建立文件夹BIN,我们将会在编译后,将WEB根应用程序项目中的所有ASPX,ASCX以及web.config和global.asax文件复制到BUILD下,把DLL文件复制到BIN下
另外,上面建立的WEB虚拟目录应用程序将会被VS自动标记为应用程序,这是没必要的,我们可以在IIS将其删除(是删除应用程序)

经过以上步骤,我们可以将一个WEB项目分拆为了一个根项目和若干个子模块项目,但是,问题也出现了,那就是布署的问题,我们怎样将每个项目中的ASPX,ASCX文件和DLL文件快速的复制到最终的BUILD文件夹中而保持其结构呢?
我们可以使用VS.NET的生成后事件,这个部分是我在研究Cuyahoga项目时发现的,因为WEB项目没有生成后事件和预生成事件,所以,给布署带来困难,而Cuyahoga的解决方法是修改WEB项目的定义文件*.csproj,将其中项目的类型由WEB改为Local,同时,删除VS.NET自动生成的*.csproj.webinfo文件,然后,单独打开该项目,VS.NET会将其识别为本地项目而非WEB项目,并且,VS.NET也会为其生成*.csproj.user文件,最后,打开解决方案的定义文件,将其中对应该WEB项目的地址由http方式直接改为相对于解决方案定义文件的路径,如此类推,更改完所有的WEB项目文件后,再打开解决方案,你就会发现,WEB项目已经变为本地项目了,这时,整个解决方案交给客户时,客户就算没有按WEB项目特有的方式去创建WEB应用程序,也能打开并编译,并且Cuyahoga这样做的另一个目的是要实现布署的自动化,cuyahoga是一个模块化的项目,其中的ASCX都是以模块出现的,如果使用WEB项目,那么这些WEB模块就无法自动复制到布署目标文件夹,而改造成本地项目后,就可以利用生成后事件进行复制了
(上面的操作中注意,当你把WEB项目改为LOCAL后,应立即删掉*.csproj.webinfo文件,同时,这时不要急于打开总的解决方案文件,否则会提示错误信息,应该立即单独打开该项目,然后直接退出,这时VS会自动生成LOCAL项目对应的*.csproj.user文件,接着,打开总的解决方案文件去修改此项目的对应路径即可)

开始,我以为Cuyahoga的解决方法是最好的,但是,后来,我发现,打开他的解决方案,如果你想自己加入一个用户控件模块时,由于该模块已经改为LOCAL,所以VS.NET根本不允许你建立与WEBFORM相关的文件

又继续研究,发现,其实WEB项目也可以有预生成事件和生成后事件,只不过,VS.NET不会将它们显示出来罢了,因此,我们无需将WEB模块项目转成LOCAL,也可以利用生成后事件,将模块布署到最终的发布文件夹去,方法如下:
1,打开WEB模块项目的文件夹,找到项目定义文件
2.打开项目定义文件,复制以下内容到其中的PostBuildEven值中,这个属性的内容就是生成后事件命令了:
copy *.dll $(SolutionDir)build/bin /y if not exist $(SolutionDir)build/$(ProjectName) md $(SolutionDir)build/$(ProjectName)   del $(SolutionDir)build/$(ProjectName)/*.aspx   copy $(ProjectDir)*.aspx $(SolutionDir)build/$(ProjectName)
上面的命令需要解释一下:
copy *.dll $(SolutionDir)build/bin /y
这个命令的作用是将项目文件夹下所有.DLL文件复制到解决方案文件夹(宏$(SolutionDir))的build/BIN文件夹下,并且,如果文件存在,则自动覆盖

这两个字符是VS.NET生成后事件中的换行符,必须在每一行命令后加上
 if not exist $(SolutionDir)build/$(ProjectName) md $(SolutionDir)build/$(ProjectName) 
这个命令是用于在build目录中为项目建立建立文件夹,用到了if 命令,宏$(ProjectName) 代表项目名,比如项目名为Controls,则目标文件夹中不存在Controls时,会自动建立该文件夹
del $(SolutionDir)build/$(ProjectName)/*.aspx
这个命令将目标文件夹中项目文件夹下的ASPX文件删除掉,目的是保持目标目录项目文件夹是干净的
copy $(ProjectDir)*.aspx $(SolutionDir)build/$(ProjectName)
最后,上面的命令将项目文件夹下所有ASPX文件复制到目标文件夹下的项目文件夹中

需要提醒的是上面使用的一些宏,像$(ProjectDir)本身生成的路径中带有末尾/分隔符,因此,无需再添加/

每一个WEB模块项目均可以使用上面的生成后事件来进行布署,当然,我上面没有处现ASCX的复制
编译后,BUILD文件夹下就有了一份结构正确的并且仅包含网站运行所需文件的内容了

GIT 在服务器上布署 & 本地布署

GIT 在Linux & windows安装部署 1)            安装git一.Linux部署 git [root@bjoss03 ~]# yum install git 2)     ...
  • ywCSD
  • ywCSD
  • 2017年03月08日 14:25
  • 284

【PHP项目部署四】Apache、PHP、Mysql整合

一、Apache与PHP的整合 (1)为Apache添加对PHP的支持         打开Apache的配置文件“httpd.conf“(在conf目录下),将左边的dll文件写入Apache的...
  • chenyanmoting
  • chenyanmoting
  • 2016年02月29日 20:02
  • 3282

Nodejs项目部署阿里云完整流程

nodejs项目部署阿里云完整流程 参考文档:http://blog.csdn.net/chenlinIT/article/details/73343793 细节注意:1.启动nodejs服务需要...
  • u013263917
  • u013263917
  • 2018年01月11日 19:37
  • 108

ubuntu中布署IDP

ubuntu中布署IDP 参考官方文档: apache和tomcat的准备:https://wiki.shibboleth.net/confluence/display/SHIB2/IdPApach...
  • jenyzhang
  • jenyzhang
  • 2016年09月01日 15:36
  • 339

部署Express至服务器

小小的部署实践
  • nzyalj
  • nzyalj
  • 2017年03月29日 22:14
  • 1321

Citrix 服务器虚拟化之七 Xenserver虚拟机复制

Citrix 服务器虚拟化之七 Xenserver虚拟机复制      XenServer 包含两种克隆虚拟机的方法,完整复制和快速复制。完整复制就是将虚拟机完整地复制一份,复制速度取决于存储性能...
  • kkfloat
  • kkfloat
  • 2013年07月26日 21:33
  • 6982

用普通计算机假设基于liunx系统的NAS部署FineReport决策系统

本文主要介绍了如何在NAS-DSM系统上部署Finereport数据决策系统。
  • nayun123
  • nayun123
  • 2016年09月19日 07:31
  • 603

项目布署到linux

http://blog.csdn.net/wangshuo_csdn/article/details/37723801 具体步骤: 1. 下载ssh,免费的客户端工具。 2..购买以后,关闭服务器,重...
  • lv_hang515888
  • lv_hang515888
  • 2016年04月07日 21:00
  • 270

Winform 安装与布署

前几天从网上找了个截图开源代码进行研究,发现源码小程序是用VS2012建立的,刚好我也升级到VS2012不久,没什么犹豫就直接拿来用了(关于VS2012有什么新鲜的,可以参考我之前的一篇博客:升级到V...
  • wzh1215
  • wzh1215
  • 2016年06月24日 11:45
  • 421

Centos布署内网代理服务器

http://www.centoscn.com/CentosServer/test/2015/0217/4729.html 环境及要求 内网工作机10台,全为win7系统,网段是192...
  • oMingZi12345678
  • oMingZi12345678
  • 2016年10月25日 11:57
  • 406
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WEB项目的分拆和布署
举报原因:
原因补充:

(最多只允许输入30个字)