在上一篇WEB项目的分拆和布署中,我从Cuyahoga这个项目中的WEB项目布署方法和另一篇来自CSDN上关于WEB项目分拆的文章中总结了一种用于WEB项目的模块化分解及自动布署的方法

后来,cndragon朋友留言给我,在上面告诉了我如何让VS.NET可以在本地项目中创建WEB项目相关文件的方法
他的方法经我验证,确实有效,默认情况下,当你建立一个WEB应用时,点新建-->文件,看不到WINFORM相关的文件类型(例如WINFORM窗体等),同样的道理,你建一个类库项目时,你也不可能在其中加入WEBFORM相关的资源
更糟的其实不是这些,而是你怎么样把WEB项目的模块中的ASCX文件和DLL文件自动的复制到主WEB应用项目或某个目录中去,虽然我在前面讲了WEB应用也可以使用生成后事件命令,但是毕竟不直观,更为重要的是WEB项目还有一个不爽的地方,就是打开包含WEB项目的解决方案时,必须按你开发时对WEB项目的定义来建立WEB站点或虚拟目录,这样,对于拿到你产品的客户来说,非常麻烦
但是,有了Cndragon朋友的建议,这两条都迎刃而解,方法是:
打开C:\Program Files\Microsoft Visual Studio .NET 2003\VC#\CSharpProjectItems\LocalProjectItems\Localprojectitems.vsdir
此文件,这个文件里定义了本地项目中新建文件的文件类型条目
每一项如下所示:
..\CSharpAddWinFormWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2237|10|#2264|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4535|0|Form.cs
要想让本地项目支持建立WEBFORM,你可以打开下面的文件:
C:\Program Files\Microsoft Visual Studio .NET 2003\VC#\CSharpProjectItems\WebProjectItems\webprojectitems.vsdir
这个文件定义的是WEB项目新建文件中的条目
复制以下几条到本地项目的定义中
..\CSharpAddWebFormWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2236|10|#2263|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4534|0|WebForm.aspx
..\CSharpAddWebServiceWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2243|20|#2266|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4521|0|Service.asmx
..\CSharpAddMobileWebFormWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2398|25|#2399|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4571|0|MobileWebForm.aspx
..\CSharpAddWebDataForm.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2380|45|#2381|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4559|0|DataForm.aspx
..\CSharpAddWebUserControl.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2378|55|#2379|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4558|0|WebUserControl.ascx
..\CSharpAddMobileWebUserControl.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2400|56|#2401|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4572|0|MobileWebUserControl.ascx
然后保存

这时,当你建立一个本地项目(类库等)的时候,你会发现,新建菜单中的文件,类型里多了WEBFORM等几项,这样,你就可以在类库项目里写WEBFORM啦,同时,你也可以直接使用生成后事件来布署了

不过,我发现,经过以上方法,在类库项目上点右键的上下文菜单中,仍然没有WEBFORM相关的文件类型项目,哪位朋友知道如何定制项目名键菜单的话,告诉我一下
多谢CnDragon朋友的建议