2013-01-23 36 views
1

我有一个包含许多项目的解决方案。一个是asp.net项目,并设置为使用asp.net开发服务器。其他项目与asp.net无关:例如,一些是以非托管C++编写的Windows服务,其他则是c#控制台应用程序。ASP.NET开发服务器

我的问题是,如果我在调试器中启动任何nonasp.net项目,Visual Studio仍会启动asp.net开发服务器。当我使用Visual Studio的多个实例调试程序交互时,这会导致问题。当我调试Web应用程序时,想让Web服务器启动。

我注意到,当我调试一个nonasp.net项目时,asp.net开发服务器启动时使用在asp.net项目属性中指定的端口号和虚拟目录。这些项目之间没有项目依赖关系。

有没有办法告诉visual studio只为实际指定它应该使用的项目启动开发服务器?

编辑1:要重现此问题:

  1. 使用VS2010,创建一个空的解决方案。
  2. 添加一个接受所有默认值的C++控制台应用程序。将fgetchar()添加到生成的main(),以便在运行时不会立即退出。
  3. 在调试器中运行该项目,并注意到asp.net开发服务器确实启动了而不是
  4. 向解决方案添加一个asp.net Web应用程序项目,接受所有默认值。转到项目属性web选项卡,并验证它是否配置为使用asp.net开发服务器。
  5. 将C++控制台应用程序设置为启动项目,然后在调试器中启动C++项目。请注意,即使Web应用程序项目没有运行,asp.net开发服务器现在也会启动。

编辑2:说明我希望服务器在调试Web项目时启动,但不是在调试其他非Web项目时启动。

+0

我没有想到web服务器确实启动了非web项目?非网络项目的解决方案是否有任何Web项目?你有没有打算在你里面有多个启动项目? (http://msdn.microsoft.com/en-us/library/ms165413.aspx)如果多个启动项目包含任何Web项目? – mortb

+0

@mortb当我调试一个非web项目时,web服务肯定会启动 - 我会看到一个通知弹出窗口,显示端口和vpath。我检查了解决方案中没有多个启动项目。非网络项目中没有Web项目。感谢您的回应! –

回答

2

我有一个适合我的解决方案。

似乎web项目具有一个属性,该属性控制在调试器启动时是否启动asp.net开发服务器,即使web项目本身没有被调试也会启动

要更改此属性,请在解决方案资源管理器中选择Web项目,然后按F4访问属性网格。在网格中,在标题Development Server下,是一个名为Always Start When Debugging的布尔属性。默认值是true。

当我将此属性设置为false时,当我调试非Web应用程序项目时,asp.net开发服务器不再启动。

该属性是持续在<ProjName>.csproj.user,而不是<ProjName>.csproj

0

在Web项目的属性中,在“Web”选项卡下,可以将启动行为更改为“使用自定义Web服务器”。这将停止VS调用IIS或ASP.NET开发服务器实例。

+0

感谢您的回复。我希望开发服务器在我调试Web应用程序项目时启动。我的问题是,它也开始当我调试其他,非网络项目。我已经编辑了这个问题来明确这一点。 –