.net 工程合并

现状描述: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。

 
原文地址:https://www.cnblogs.com/publicbill/p/724285.html