VS 2012启动应用程序时基于错误路径

21

我有一个应用程序,它在c:\Dev\MyApp\Main上进行源代码控制(也在TFS 2012上)。

因为我正在开发一个新功能,所以我决定在c:\Dev\MyApp\BranchNewFeature上打开一个分支。

我进行了开发,当我决定测试时,就好像我根本没有做任何更改一样。 我按F5,看到应用程序的基线版本……经过调查,我注意到一个非常有趣的事实:当我检查IIS Express时,应用程序的“启动路径”是旧的(c:\ Dev \ MyApp \ Main)。

有人能帮我使IIS Express指向新路径吗? (C:\ Dev \ MyApp \ BranchNewFeature)


你尝试过关闭IIS Express并重新启动吗? - cheesemacfly
@cheesemacfly 是的!我甚至重新启动了整个机器... - Leonardo
1
你有没有在 C:\Users\your_name\Documents\IISExpress\config\applicationhost.config 文件中做过任何更改? - cheesemacfly
1
@cheesemacfly 不要!我正在查看那个文件,我的所有Web应用程序都在那里!而且它指向了错误的文件! - Leonardo
@cheesemacfly 我会尝试...但是难道不应该由VS来处理吗?因为如果我必须为每个分支配置它,那我就有点麻烦了... - Leonardo
显示剩余2条评论
7个回答

24

我遇到了相同的问题。为解决此问题,我采用了cheesemacfly的建议,更新C:\Users\%USERNAME%\Documents\IISExpress\config\applicationhost.config以指向新目录。

这种解决方法的明显缺点是,如果你经常在不同分支之间切换,则需要反复执行此操作。看起来像是VS2012中的一个bug...


16
在Visual Studio 2013中也能够复现。 - EvAlex
这不是一个答案,而是一个解决方法... VS 应该会按预期启动它... - Leonardo
3
我通过在 Visual Studio 中右键单击其中一个项目,在“Web”下更改了“项目 URL”的端口号(它们原本是相同的)来解决了这个问题。然后,我将我的 applicationhost.config 文件重命名为 applicationhost_bak.config 并重新启动了 Visual Studio。 - Robert Fricke
啊!今天我浪费了4个小时来追踪这个问题。谢谢你的建议。我在配置文件中更改了路径,现在一切都正常了。 - John Henckel

17

重新启动VS似乎可以解决这个问题。这只是一种替代方案,就像所有Windows产品一样的惯例——关闭和重启,然后它会起作用!

以下是发生的情况:我在使用VS2013分支开发web项目后遇到了同样的问题。正如Chris Gillum上面提到的那样,在我重新启动VS时,应用程序host.config文件被打开并自动刷新为正确的路径。因此,这显然是Visual Studio中的一个错误。

更新:

自从我发布答案以来,我已经多次遇到了这个问题。我找到了一个不必重新启动VS的替代方法。现在我做的是:

  1. 右键单击IISExpress图标并单击“显示所有应用程序”
  2. 从列表中选择站点名称
  3. 点击(打开)配置文件
  4. 在下面的部分中搜索和修复您工作区的物理路径:
<sites>
    <site name="MyWebSite" id="XXX">
        <virtualDirectory path="/" physicalPath="FIX_THIS_PATH" />
    </site>
<sites>

IISExpress会自动刷新网站,您无需重新启动VS。希望这可以帮助某些人。


2
我的问题是我同时打开了两个分支。在修复了MAIN中的问题并关闭它后,DEV运行了错误的代码。通过简单地重新启动带有DEV项目的VS2013,问题得到了解决。谢谢... - ShaneBlake
1
这是一个好答案,因为自原问题发布以来,IIS Express已经有了一些变化。在VS 2015中,IIS Express的配置文件存储在解决方案文件夹中的.vs文件夹中。 - trevorc

3

如果您在搜索Visual Studio 2015中的相同问题,则applicationhost.config文件已移动到一个隐藏的文件夹中:$SolutionDirectory/.vs/config。


2
当你打开包含IISExpress Web项目的Visual Studio解决方案时,applicationHost.config <site>元素配置将会被更新。如果你随后打开一个不同分支的解决方案,<site>配置可能会被覆盖以指向该不同分支。
例如,假设你有两个分支的解决方案,其中包含一个配置为在4000端口上使用IISExpress的Web项目。当你打开Branch1的解决方案时,applicationHost.config将被更新,注册一个在localhost:4000处指向Branch1文件夹的站点的<site>元素。当你启动调试你的解决方案时,浏览器会打开localhost:4000,一切都正常。
如果你随后打开Branch2的解决方案,applicationHost.config将再次被修改,覆盖<site>元素,使得localhost:4000现在指向Branch2。现在,无论是在打开的Branch1解决方案还是Branch2解决方案中启动调试,localhost:4000都会指向Branch2,因为这是applicationHost.config文件中所包含的内容。
为了解决这个问题,可以将两个分支配置为使用不同的端口,然后Visual Studio将管理两个独立的applicationHost.config <site>元素,每个分支一个。每次创建新分支时,都需要记得配置一个新的端口号。

1
我曾经遇到类似的情况,寻找答案时发现了这篇文章。我考虑应用这个方法,但每次需要再次分支或合并时都觉得很麻烦。
我进行了更深入的挖掘,并且我相信我找到了一个更简单的解决方法。我发现,在Visual Studio 2013中,如果您打开项目的属性,然后点击Web选项,您将看到一个服务器部分,其中有一个名为“创建虚拟目录”的按钮。
如果您点击此按钮,它会提示您一个关于指向与项目不同的目录的问题,并询问是否要修复它。当您点击“是”时,它会为您进行修复,现在调试时它将从正确的位置获取。

1
我遇到了一个类似的情况,我复制了一个项目。运行项目后,在浏览器中显示的是原始项目,而不是我复制并编辑过的版本。我的解决方案是从配置文件中删除所有受影响的站点:

C:\Users\%USERNAME%\Documents\IISExpress\config\applicationhost.config

我随后在Visual Studio中右键单击项目,点击属性,然后点击Web选项卡,在此选项卡中更改了项目URL中指定的端口并保存。 Visual Studio然后询问是否要将该项目添加回应用程序主机配置文件中。我点击了是并运行了项目,一切都正常了。

我的问题不是Visual Studio中的错误,而是配置不匹配。


0
在VS 2015中,我不需要直接编辑配置文件。我打开了分支项目并转到项目下的属性页面。转到Web选项卡并编辑Servers > Project URL。

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