在生成时自动停止/重新启动ASP.NET开发服务器

有没有办法自动停止ASP.NET开发服务器(Cassini),只要我在VS2008中进行构建/重建(然后在需要的时候显然会重新启动它)? 也许有一些隐藏的配置设置在某个地方? 或者至少以某种方式将其作为后期制作活动来完成?

对于一些背景,问题是我使用Spring.NET进行依赖注入等,但它在Application Start上加载它的单例,这意味着如果我更改任何与Spring相关的代码/配置,我必须停止开发服务器,所以它会再次开始下一次调试/运行,确保再次触发Application Start事件。 换句话说,即使你改变了一堆代码/配置然后再次开始调试,它实际上并没有再次启动,因为它已经在运行,所以你的新代码没有被使用。


解决方法:在Visual Studio中使用ASP.Net Web Server调试Global.aspx.cs Application_Start()

在Web服务器项目上启用“编辑并继续”为我工作。 当你停止调试时它没有关闭cassini,但是当你开始调试时它确实会重新启动cassini。


所以我最终得到了一个基于Magnus'回答的解决方法,但是使用了下面这个相对简单的宏(为什么他们强迫你使用VB作为宏?我觉得都很脏):

Imports System
Imports System.Diagnostics

Public Module KillCassini

    Sub RestartDebug()
        If (DTE.Debugger.DebuggedProcesses.Count > 0) Then
            DTE.Debugger.Stop(True)
        End If
        KillCassini()
        DTE.Debugger.Go(False)
    End Sub

    Sub KillCassini()
        Dim name As String = "WebDev.WebServer"
        Dim proc As Process
        For Each proc In Process.GetProcesses
            If (proc.ProcessName.StartsWith(name)) Then
                proc.Kill()
            End If
        Next
    End Sub

End Module

基本上,如果调试器当前正在运行,它将停止它,然后终止名为“WebDev.WebServer”的所有应该是所有Cassini实例的进程,然后再次启动调试器(这将隐式启动Cassini)。 我正在使用proc.Kill()因为proc.CloseMainWindow()proc.WaitForExit(1000)似乎都不起作用。

无论如何,一旦你有了你的宏,你可以将其分配给键盘快捷方式,或创建自定义工具栏按钮来运行它。


我只是打开一个命令行(runas admin)

运行以下。 它应该杀死所有人

Taskkill /IM WebDev.WebServer40.EXE /F
链接地址: http://www.djcxy.com/p/85077.html

上一篇: Automatically stop/restart ASP.NET Development Server on Build

下一篇: Retrieving Video Card Memory on cards with more than 4GB of memory