有些历史......
一段时间以来,我一直在使用VS2010与TFS开发一个网站,我使用多个工作区;例如,工作空间DEV1可能具有部分实现的新功能的代码,因此我将启动VS2010的第二个实例并在工作空间DEV2中打开相同的解决方案以修复错误。
在解决方案文件中,端口号是固定的,这样如果我在任何工作区中打开一个实例,测试的URL就会开始http://localhost:8251/Core/...
。如果我打开第二个副本,则VS2010检测到第一个实例,检出解决方案文件并分配一个随机端口号。因此,URL现在可能会启动http://localhost:12345/Core/...
。显然,端口号在大多数情况下并不重要,但将其固定进行测试很方便。
所有在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”以包含类似于......的行
<site name="Core" id="3"> <application path="/" applicationPool="Clr4ClassicAppPool"> <virtualDirectory path="/" physicalPath="C:\Working\DEV1\Core" /> </application> <application path="/Core" applicationPool="Clr4ClassicAppPool"> <virtualDirectory path="/" physicalPath="C:\Working\DEV1\Core" /> </application> <bindings> <binding protocol="http" bindingInformation="*:8251:localhost" /> </bindings> </site>
这似乎适用于第一个工作区,但不清楚如何为多个工作区扩展它,特别是考虑到将为第2个,第3个等解决方案动态分配端口号。简单地复制上面的DEV2,DEV3等,后缀网站名称并更改所需的ID,似乎最初工作,但进一步调查表明IISExpress实际上使用DEV1工作区!即它正在使用第一个匹配的应用程序。我是否必须按工作区单独命名站点?我是否需要对每个实例的端口号进行硬编码?怎么做|我然后参考每一个?在VS2010处理多个工作区的简单性之后,在我看来这完全是一团糟!
简而言之,我想要的是能够使用引用相同解决方案的多个工作区打开一个或多个VS2013实例,并能够并排运行应用程序的多个副本,可能使用动态分配的端口号,并知道每个实例都使用自己的文件夹。如果只有一个实例打开,它应该使用默认端口号,但它已经在使用中,它应该只分配一个随机端口,而不会干扰其他解决方案。
此外,在测试时,似乎有些东西会重写此文件。这是正常的,因为一旦我的配置工作,我不希望它改变! [更新:似乎我不是唯一有这种担忧的人,因为其他人已经问过这个问题here!但是,似乎没有一个解决方案可行。]
如果MS没有移除卡西尼那么会更简单......:SIGH:
更新:在VS2012以及other have a similar problem!
中似乎很难