一些歷史...與VS2013一起使用TFS時,如何爲多個Web工作區配置IISExpress?
一段時間以來,我一直在使用VS2010與TFS開發一個網站,我工作使用多個工作區;例如,工作區DEV1可能具有部分實現的新功能的代碼,因此我將啓動VS2010的第二個實例,並在工作區DEV2中打開相同的解決方案以修復錯誤。
在解決方案文件,端口號是固定的,因此如果我在任何工作場所開設一個實例進行測試的URL開始http://localhost:8251/Core/...
。如果我打開第二個副本,那麼VS2010檢測到第一個實例,檢出解決方案文件並分配一個隨機端口號。因此,URL現在可能開始http://localhost:12345/Core/...
。顯然,在大多數情況下,端口號並不重要,但將其固定用於測試很方便。
所有使用它的「內在」的Web服務器(卡西尼)運作良好VS2010下。我可以在不同的工作空間中使用解決方案打開VS2010的多個實例,並且從來沒有任何「交叉激活」,即在一個實例中打開頁面從另一個工作空間訪問文件。
...歷史的終結。
我們現在正在VS2013和「內部」網絡服務器已刪除,因此IISExpress有可能被用來進行測試。問題是如何配置它,使其適用於可以動態分配端口號的多個TFS工作區。
首先要注意的是,存儲的啓動頁面「Default.aspx?param = ...」不起作用,VS2013下的IISExpress嘗試打開http://localhost:8251/Default.aspx...
忽略項目名稱。所以在初次失敗後,我需要輸入一個新的URL。顯然,一旦我們從VS2010完全遷移到VS2013,我可以將啓動頁面更改爲「Core/Default.aspx ...」,一切都會好起來的。
我也一直告訴我可以在我的文檔配置文件「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>
這似乎是工作對於第一個工作空間,但不清楚如何將其擴展到多個工作空間,尤其是考慮到端口號將被動態分配給第二,第三等解決方案。簡單地複製上面的DEV2,DEV3等,加上站點名稱並根據需要更改ID,似乎最初工作,但進一步的調查表明,IISExpress實際上使用DEV1工作區!即它使用了第一個匹配的應用程序。我是否必須單獨按工作區命名網站?我是否必須硬編碼每個實例的端口號?那麼我如何參考每一個?在VS2010處理多個工作區的簡單性之後,我認爲這完全是一團糟!
總之,我想要的是能夠使用多個工作空間引用相同的解決方案來打開VS2013的一個或多個實例,並且能夠並行運行多個應用程序副本,可能使用動態分配的端口數字,並知道每個實例正在使用自己的文件夾。如果只打開一個實例,它應該使用默認端口號,但它已經被使用,應該只分配一個隨機端口,而不會干擾其他解決方案。
此外,儘管測試,似乎什麼重寫這個文件。這是正常的,因爲一旦我有一個可行的配置,我不希望它改變! [更新:看起來我不是唯一一個有這方面問題的人,因爲其他人詢問了這個here!然而,似乎並沒有解決這個問題的方法。]
這將是這麼簡單得多,如果MS沒有刪除卡西尼...:感嘆:
更新:似乎這是很難在VS2012以及other have a similar problem!
有了進一步的思考和實驗的時間,我意識到IISExpress的部分答案只是將每個工作區視爲一個單獨的網站 - 這將是IISExpress將如何查看它。在多個VS2013會話之間獲得有趣的效果,其中在一個會話中啓動一個調試會話終止另一個會話中的IISExpress!仍然認爲VS2010更易於使用! – StarNamer