在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
通常情况下,在开发一个asp.net的WEB网站时,若要打开WEB网站,首先要打开开发平台,选择菜单的“文件”-“打开”-“网站”,然后选择网站的根目录,最后确认后,方可打开这一网站。不像WEB应用程序,有个解决方案(*.sln),双击后可以打开(当然也可以为网站生成一个解决方案),因此以上这种方法还是比较麻烦。如果在某些应用环境中,需要按照如上的方式打开一个站点,本文利用了Visual Studio提供的命令行工具、宏以及系统注册表知识,可以实现一键完成如上操作步骤。以下以windows 2008+visual studio 2010平台为例。 备注:实际上,VS通过上述方式打开网站时,也是在内存中生成了一个sln文件,然后打开这个解决方案的,只是尚未以文件形式保存在磁盘,因此在开发平台中关闭网站时会提示是否保存它的解决方案。这一结论可以通过录制宏来判别出来。 效果图: 1.思路 想达到的效果就是如果当需要打开某一网站时,只需在其文件夹上右键,选择一个预先设置好的命令,就能打开VS开发平台,并打开这一文件夹下的网站。因此,涉及到右键调用命令问题以及命令行打开网站的问题。 2.右键调用命令 右键上去调用某一命令,这是注册表的事,这个比较简单: [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\OpenVSWeb] @="Open Folder As Website" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\OpenVSWeb\command] @="需要执行的某一命令” 这一注册表命令,首先在右键单击文件夹时候,显示"Open Folder As Website",选择后,去执行某一命令,具体执行什么命令,是下一步的工作。 3.命令行打开网站 VS平台运行时的进程是devenv.exe,好在它也提供了命令行方式,用于打开项目。可以通过在运行中,输入devenv /?来查看具体有哪些参数。可惜的是,从介绍来看,它提供的大部分方法通常是打开一个解决方案文件或项目文件。也就是无法直接打开一个文件夹下的网站。其中有一个命令,是command参数,它用于打开VS平台后去执行某些命令。这让我想到了利用VS平台提供的宏工具,它可以用于完成手动的一些操作。 4.宏命令自动打开web站点 通过查阅,发现VS提供了EnvDTE 命名空间,它可以实现VS的自动化操作。其中的VsWebSite的VSWebPackage提供了OpenWebSite方法来将指定目录作为网站打开。 OpenWebSite("路径位置",VsWebSite.OpenWebsiteOptions.OpenWebsiteOption_None, False) 5.总结 至此,通过注册表执行了devenv,通过devenv执行了宏命令,达到一键打开web站点的目的。下面给出所有代码: 宏文件:(VS2010中编译通过,其他版本如果Imports部分报错,请适当修改或删除Imports即可) 在VS中,菜单选择:工具-宏-新建宏项目,命名为WebsiteMacroProject,为此项目添加vsWebSite.Interop引用,为项目添加一新项,命名为Website,代码: Option Strict Off Option Explicit Off Imports System Imports EnvDTE Imports EnvDTE80 Imports EnvDTE90 Imports EnvDTE90a Imports EnvDTE100 Imports System.Diagnostics Public Module Website Sub OpenWebsite(Optional ByVal path As String = "") If (String.Compare(path, String.Empty) = 0) Then MsgBox("文件夹目录无能为空!", MsgBoxStyle.OkOnly) Else Dim webPkg As VsWebSite.VSWebPackage webPkg = DTE.GetObject("WebPackage") webPkg.OpenWebSite(path, VsWebSite.OpenWebsiteOptions.OpenWebsiteOption_None, False) End If End Sub End Module 保存编译后即可。 注册表文件:复制到文本文件中,保存为*.reg(*为任意合法的文件名字符串) Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\OpenVSWeb] @="Open Folder As Website" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\OpenVSWeb\command] @="devenv /command \\\"Macros.WebsiteMacroProject.Website.OpenWebsite %1\\\"" 保存后双击执行导入。 至此,可以在任意文件夹上右键,选择"Open Folder As Website",则系统会自动打开这一文件夹下WEB站点。 6.共享文件 我已经将整个代码打包,懒得弄的人可以点击直接下载。 安装步骤: 1.将WebsiteMacroProject.vsmacros复制到一个固定位置(默认2008下vs2010的宏均放在c:\document\Visual Studio 2010\Projects\VSMacros80下,当然其他位置也可以,只要不会删除即可) 2.打开VS平台,工具-宏-加载宏项目,选择第一步中位置下的WebsiteMacroProject.vsmacros文件。 3.双击Install.reg,导入到注册表。(适合XP及其以上系统) 使用方法: 在任意文件夹上右键,选择"Open Folder As Website"即可。 卸载: 主要是去除右键的显示,执行Unstall.reg即可。 参考: http://wenku.baidu.com/view/e70c9d2d7375a417866f8f3f.html http://bytes.com/topic/c-sharp/answers/659130-launch-devenv-exe-open-web-site http://weblogs.asp.net/bradleyb/archive/2005/12/09/432802.aspx |
请发表评论