2012-09-10 31 views
7

我正在嘗試爲網站編寫一個構建系統,以便我可以執行一次單擊構建。我從源代碼存儲庫中獲取代碼的乾淨副本,然後使用msbuild運行AspNetCompiler任務以完成網站的所有預編譯。爲什麼我需要ASP.NETNetCompiler的VirtualPath屬性

令我困惑的是我需要指定一個VirtualPath或MetabasePath。我沒有配置數據庫路徑 - 我只想將它編譯到本地目錄中,然後可以將它部署到選擇的任何服務器(即先開發服務器,然後再啓用服務器)。

VirtualPath很棘手,因爲我想要將相同的代碼部署到多個位置 - 代碼使用一些上下文和配置詳細信息來計算其SiteID以顯示不同的信息 - 因此指定單個虛擬路徑似乎並不明智。

沿着類似的路線有其他各種問題(例如VirtualPath in AspNetCompiler MSBuild Task - does it have to be equal to the final deployed Virtual Path?),但我發現的唯一答案似乎更軼事 - 即他們jsut說,它們似乎沒有什麼區別於他們的經驗。

但是,我不能相信它真的沒有什麼區別。必須有一些使用它的情況,否則它不會在那裏,也不需要。

那麼有人知道(最好有一個參考)爲什麼這樣做?將構建的虛擬路徑傳遞給任務可能會導致哪些問題?

回答

2

在Visual Studio中發佈站點時,不需要輸入此數據(實際上,我從未見過任何選項)。我很驚訝它在MS-Build配置中是強制性的。

無論Visual Studio使用什麼,你都可能想要「反向工程」,但我猜測它會是一個單斜槓「/」或類似的東西。

話雖如此,這個要求可能與issues圍繞使用虛擬路徑提供者或資源提供者的預編譯網站有關。

+0

是的,我也很驚訝。而且我不確定如何去做逆向工程來製作視覺工作室。不知道該屬性用於難以搜索Visual Studio的用途。任何有關我可能會這樣做的建議,將不勝感激。 – Chris

+0

在Visual Studio中,轉至工具 - >選項 - >項目和解決方案(如果找不到它,請選中「顯示所有設置」框) - >「生成並運行」。然後將輸出詳細程度設置爲診斷。打開輸出窗口(Ctrl-Alt-O)並執行構建。我沒有這臺機器上的網站,或者我有一個快速瀏覽。 –

+0

這是一個很棒的選擇,可以幫助調試我一直有的其他問題。不幸的是,當涉及到預編譯步驟時,似乎沒有任何完整的診斷輸出,並且只是說沒有任何額外的調試輸出(例如正在使用的參數)的通常的「Building directory」/ MSReporting/App_Code /'。 :( – Chris

0

Visual Studio對VirtualPath屬性使用單個反斜槓。生成的完整命令行字符串看起來像這樣。

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v \ -p C:\src\Web\WebApplication1\obj\Release\AspnetCompileMerge\Source C:\src\Web\WebApplication1\obj\Release\AspnetCompileMerge\TempBuildDir 
相關問題