zoukankan      html  css  js  c++  java
  • 一键打开ASP.NET WEB网站项目

    通常情况下,在开发一个asp.net的WEB网站时,若要打开WEB网站,首先要打开开发平台,选择菜单的“文件”-“打开”-“网站”,然后选择网站的根目录,最后确认后,方可打开这一网站。不像WEB应用程序,有个解决方案(*.sln),双击后可以打开(当然也可以为网站生成一个解决方案),因此以上这种方法还是比较麻烦。如果在某些应用环境中,需要按照如上的方式打开一个站点,本文利用了Visual Studio提供的命令行工具、宏以及系统注册表知识,可以实现一键完成如上操作步骤。以下以windows 2008+visual studio 2010平台为例。

    备注:实际上,VS通过上述方式打开网站时,也是在内存中生成了一个sln文件,然后打开这个解决方案的,只是尚未以文件形式保存在磁盘,因此在开发平台中关闭网站时会提示是否保存它的解决方案。这一结论可以通过录制宏来判别出来。

    效果图:

    1 2

    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

  • 相关阅读:
    函数模板、函数模板特化、重载函数模板、非模板函数重载
    输出流格式化(以操纵子方式格式化,以ios类成员函数方式格式化)
    文件的读写、二进制文件的读写、文件随机读写
    文件流(fstream, ifstream, ofstream)的打开关闭、流状态
    流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作
    对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr<class>、实现Ptr_vector
    operator new 和 operator delete 实现一个简单内存泄漏跟踪器
    异常与继承、异常与指针、异常规格说明
    程序错误、异常(语法、抛出、捕获、传播)、栈展开
    C语言错误处理方法、C++异常处理方法(throw, try, catch)简介
  • 原文地址:https://www.cnblogs.com/lerit/p/1955729.html
Copyright © 2011-2022 走看看