【发布时间】:2014-04-08 21:21:04
【问题描述】:
一些历史......
一段时间以来,我一直在使用 VS2010 和 TFS 开发一个网站,我使用多个工作区进行工作;例如,工作区 DEV1 可能包含部分实现的新功能的代码,因此我将启动 VS2010 的第二个实例并在工作区 DEV2 中打开相同的解决方案来修复错误。
在解决方案文件中,端口号是固定的,因此如果我在任何工作区中打开一个实例,用于测试的 URL 会以 http://localhost:8251/Core/... 开头。如果我打开第二个副本,那么 VS2010 会检测到第一个实例,检查解决方案文件并分配一个随机端口号。因此 URL 现在可能以 http://localhost:12345/Core/... 开头。很明显,端口号在大多数时候并不重要,但为了测试而固定它很方便。
使用其“内部”网络服务器 (Cassini) 在 VS2010 下一切正常。我可以使用不同工作区中的解决方案打开多个 VS2010 实例,并且从来没有任何“交叉激活”,即在一个实例中打开页面会访问来自不同工作区的文件。
...历史的终结。
我们现在正在迁移到 VS2013,并且“内部”网络服务器已被删除,因此必须使用 IISExpress 进行测试。问题是如何配置它,使其适用于多个 TFS 工作区,其中端口号可以动态分配。
首先注意到存储的启动页面“Default.aspx?param=...”不能正常工作,VS2013 下的 IISExpress 然后尝试打开 http://localhost:8251/Default.aspx... 省略项目名称。所以在初始失败后,我需要输入一个新的 URL。显然,一旦我们从 VS2010 完全迁移到 VS2013,我可以将启动页面更改为“Core/Default.aspx ...”,一切都会好起来的。
我还被告知可以在我的 Documents (?) 文件夹中配置文件“IISExpress/applicationhost.config”以包含类似于...的行
这似乎适用于第一个工作区,但不清楚如何为多个工作区扩展它,特别是考虑到端口号将为第二个、第三个等解决方案动态分配。简单地为 DEV2、DEV3 等复制上述内容,为站点名称添加后缀并根据需要更改 id,最初似乎可以工作,但进一步调查表明 IISExpress 实际上使用了 DEV1 工作区! IE。它正在使用第一个匹配的应用程序。我必须按工作区单独命名站点吗?我是否必须为每个实例硬编码端口号? |然后我如何引用每一个?在 VS2010 对多个工作区的简单处理之后,在我看来这一切都变得一团糟!
简而言之,我想要的是能够使用引用同一解决方案的多个工作区打开一个或多个 VS2013 实例,并能够并排运行应用程序的多个副本,可能使用动态分配的端口号,并且知道每个实例都在使用自己的文件夹。如果只打开一个实例,它应该使用默认端口号,但它已经在使用中,它应该只是分配一个随机端口,并且不会干扰其他解决方案。
此外,在测试时,似乎有些东西重写了这个文件。这是正常的吗,因为一旦我有了一个有效的配置,我就不想改变它! [更新:似乎我不是唯一一个担心这个问题的人,因为其他人已经问过这个here!但是,似乎没有给出可行的解决方案。]
如果 MS 没有移除 Cassini 会简单得多... :SIGH:
更新:似乎这在 VS2012 和 other have a similar problem! 中都很困难
【问题讨论】:
-
经过进一步思考和实验,我意识到 IISExpress 的部分答案是将每个工作区视为一个单独的网站 - 这将是 IISExpress 将如何查看它。在多个 VS2013 会话之间获得有趣的效果,其中在一个会话中启动调试会话会在另一个会话中终止 IISExpress!还是觉得VS2010好用!
标签: visual-studio-2010 tfs visual-studio-2013 iis-express