Visual Studio运行错误的代码

时间:2014-04-11 17:30:43

标签: visual-studio-2013

我已经发现并发布了VS 2013,它将运行已打开的最新VS实例的代码。这令人沮丧,因为我有时必须看看同一个大项目的两个版本之间的差异。

如何重现: (我正在使用的例子可以在github上找到:https://github.com/charles1024/VS2013-Crossover-Bug

我有两个相同解决方案的副本,我将其称为Hello1和Hello2。

Hello1在Default.aspx中有一行,它将标签(lblHelloWorld)的文本设置为“Hello World”。

Hello2有这一行,但它被注释掉了。

重现的步骤(重要的是要完全遵循):

  1. 在Hello1中打开解决方案
  2. 开始调试Hello1
  3. 注意左上角有一个带有“Hello World”文字的标签
  4. 停止调试Hello1
  5. 在Hello 2中打开解决方案
  6. 再次开始调试Hello1
  7. 观察左上角不再显示“Hello World”。
  8. 可以通过在某处更改设置来解决此问题,还是实际上是错误?有没有解决方法?

    注意:

    有些人建议更改为正在运行的端口。我尝试了这个并没有任何区别。解决方案在其原始端口上运行,但仍然从VS的第二个实例运行代码。

    * 更正* 我刚刚再次检查它,端口号似乎已修复它。显然只是保存Hello2并没有使端口更改生效。你必须关闭所有东西并重新打开。

2 个答案:

答案 0 :(得分:5)

这不是Visual Studio中的错误。您打开了两个在同一端口(15770)上使用IIS Express的Web项目,因此最后获取IIS Express虚拟目录的是“获胜”。

右键点击该项目 - >属性 - >网页。在项目的一个上将项目URL更改为15771(您将询问是否要创建虚拟目录)。现在两者将并排运行。

答案 1 :(得分:3)

由于您使用相同的端口号,因此您拥有“最后一个胜出”类型的方案。您可以通过在项目URL中使用不同的端口号来防止这种情况发生。目前,您使用http://localhost:15770/作为项目网址。将其更改为另一个数字是其中一个项目。

您可以在项目属性页面中更改此设置。 Change this setting