Visual Studio 2012启动错误的项目进行调试

8
我在 Visual Studio 2012 解决方案中有一个 ASP.NET Web 应用程序项目,我将其称为 A。 我将 A 的目录复制到一个新的目录以克隆它,并将其称为 B。 我对 A 和 B 进行了大量更改,到达了它们完全不相似的程度。样式表、脚本、HTML 和后端都是不同的。
我启动 A 进行调试,它出现在我的浏览器中,一切都如预期。 我调试了应用程序一段时间,然后通过 Visual Studio 2012 工具栏上的“停止调试”图标终止了调试。
然后我启动 B 进行调试,但是却出现了 A。
我尝试清除浏览器缓存,但这不可能是问题,因为应用程序的服务器端也是错误的。
我尝试重建项目,在运行 Clean 之后。但在尝试调试 B 时仍然看到 A。
我尝试杀死与调试会话相关的所有进程,包括所有 iisexpress.exe、MSBuild.exe、WebDev.WebServer40.EXE、Microsoft.VisualStudio.Web.Host.exe 实例。
我尝试完全关闭 Visual Studio 2012,并重新打开它,然后重试调试。
编辑:
第三次关闭和重新打开 VS2012 后,它开始允许我查看 B。除此之外没有任何改变。
最好的解释是可能有一些需要更改的项目设置,以反映该项目存储在与复制之前不同的位置,但我尚未找到此类设置。
我错过了什么?

在“解决方案资源管理器”中右键单击项目B节点,然后设置为“启动项目”? - IrishChieftain
进入每个Web应用程序的属性/ Web,确保它们设置为在不同端口上运行。如果选择了自动分配端口,请切换到某个端口保存,然后将其切换回自动。 - Eugene S.
@EugeneS。这是个好主意,可能会解决问题,但并不能解释为什么会发生这种情况。我正在关闭所有当前运行的IISExpress实例。为什么在同一端口上运行新实例会导致看到以前的解决方案呢? - crush
你不能在属性面板中设置项目文件夹吗? - JanT
另外,如果复制了“.suo”文件,我也遇到了这样的问题。请删除两个解决方案的“.suo”文件并报告结果。 - Eugene S.
显示剩余4条评论
3个回答

12

今天我刚遇到了这个问题,和你一样是复制了一个项目然后编辑。所以我想分享我的解决方案。

如果您进入项目B属性(在“解决方案资源管理器”中找到),您会找到一个Web选项卡:

图片描述

在您的Servers部分,将Project Url更改为:

http://localhost: + (数字+1) + /

然后点击创建虚拟目录

您应该能够重新运行您的项目并且由于它们正在运行不同的URL上,您不应再看到这个冲突。


这实际上是我最终使用的解决方案 - 我忘记回来回答自己的问题了。谢谢! - crush
@crush:我只是晚了几年参加派对 :P - jbutler483
我曾经遇到过同样的问题,而且花了很长时间才弄清楚发生了什么。可悲的是,我正在使用Visual Studio 2013 Update 5...所以这个问题在他们那边仍然没有得到解决。唉。 - Vern Jensen
在使用VS 2015(社区版)创建项目模板并将其用于在原始项目所在的同一解决方案中创建新项目后,我遇到了这个问题。奇怪的是,第一次运行时没有调试,它可以正常加载项目,但后来出现了这种奇怪的情况。 - James Skemp
提示:如果您的解决方案有多个项目,您需要找到您的UI项目,右键单击该项目->属性->Web。 - full_prog_full

7

我曾经也遇到了完全相同的情况。问题在于两个项目(Project_A和Project_B)都被配置为在IIS Express上运行相同的端口。

IISExpress通过查看位于<Documents>\IISExpress\config\application.config的配置文件来确定端口/应用程序。

打开该文件并查找一个名为<sites>的部分,您应该会找到您VS项目的列表。找到您的项目(A和B),确保两个项目没有在同一端口上运行。

<site name="Project_A" id="17">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Projects\Somefolder\ Project_A " />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:64212:localhost" />
</bindings>
</site>
<site name="Project_B" id="18">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Projects\Somefolder\ Project_B " />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:64212:localhost" />
</bindings>
</site>

如果是这种情况,移除一个条目(即Project_B),然后在Visual Studio中重新创建该条目。
在VS中,进入Project_B的属性。点击Web选项卡并查找“Servers”部分。
输入新的端口号(即http://localhost:64213),然后单击“Create Virtual Directory”按钮。这将在“application.config”文件中添加一个条目,其中包含新的关联(即Project_B / 端口号64213)。
以上操作应该可以解决问题。希望能对你有所帮助。

这是另一个不错的解决方案。我不确定哪个解决方案最好。它们似乎差不多,只是实现方式不同。我选择了另一个解决方案,因为它不深入手动操作 IIS Express 实例配置文件(尽管有时我确实这样做)。我认为通常最好让 VS 配置该文件。 - crush

0

这个问题没有被标记为已解决,而且我遇到了类似的问题,所以我想回答一下。

你需要进入项目>属性>Web,然后勾选使用本地 Web 服务器框并覆盖应用程序根目录(如果适用),更改路径名称为你正在使用的路径,保存即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接