现状描述:P1和P2分别是已经存在的两个子工程
IIS视图。
VS2003视图。
文件夹视图
注:上面仅列出了P1工程的图例,P2工程同P1。
开始合并操作:
1、 建立外层工程myProject。
说明:当然先建立IIS下的虚拟目录。
然后再VS2003种建立新工程。如下图:
2、 然后将P1和P2两个工程的文件夹copy到myProject文件夹下面。
3、 修改P1、P2工程的工程类型:将web工程修改为Windows工程。
A、 用记事本打开p1.csproj,修改[ProjectType],将"Web"改写成"Local"。
B、 用记事本打开p1.csproj.webinfo,修改[Web URLPath],去掉[http]部分。
修改前:<Web URLPath = "http://localhost/p1/p1.csproj" />
修改后:<Web URLPath = "p1.csproj" />
C、 (如果存在p1.sln文件。)用记事本打开p1.sln,修改基本同B,去掉[http]部分。
注:如果第一次打开工程并且没有保存过,则不会有p1.sln文件。
D、 用同样的方法修改工程P2。
注:此时可以删除IIS中的P1和P2的webApplication。并且,变成windows工程以后,工程下面不可以(直接)建立页面(.aspx)文件。
4、 用VS2003打开外层工程myProject,引入既存工程P1和P2(p1.csproj和p1.csproj)。
5、 删除myProject工程。
6、 编译生成myProject.sln文件。该文件作为最后合并后的工程文件。
7、 删除myProject文件夹下面的文件。仅留下myProject.sln、myProject.suo、Web.config、Global.asax
8、 在VS2003中,既存的解决方案中文件追加。
9、分别进入P1和P2所在的文件夹,删除下列文件:p1.csproj.webinfo、Web.config。如果存在还要删除p1.sln和 p1.suo。
10、在VS2003中,分别编写P1和P2工程的build event脚本。(After event command line)
脚本内容: if not exist ..\..\bin md ..\..\bin
copy *.dll ..\..\bin
测试:修改P1或P2的工程里面的cs文件,然后编译,不需要手工Copy P1或P2中bin目录下的dll到外层工程myProject,页面可以直接更新,测试成功!
11、访问http://localhost/myProject/p2/webform1.aspx后,出现下面错误画面。
注意以下几点:
A、 如果<%@ Application Codebehind="Global.asax.cs" Inherits="myProject.Global" %>,那么在根目录的bin目录里面一定保留myProject.dll文件。
B、如果想去掉根目录bin里面的myProject.dll,就要把A中那行代码改写成<%@ Application Codebehind="Global.asax.cs" Inherits="p1.Global" %>,这样继承一个子工程的Global。