2015-06-19 58 views
3

我試圖在構建服務器(基本上,在Visual Studio之外)上構建VS2015 ASP.NET v5 Web應用程序。我們現有的腳本簡單地調用的MSBuild用的csproj文件,但這個項目我得到:構建服務器上的ASP.NET v5

項目的文件是空的

什麼是「故事」爲「建築」,這些新的webapps的Visual Studio之外?我相信他們仍然可以瞄準.NET 4.5(我希望如此,因爲我們不會很快升級網絡服務器),所以認爲它是可能的。

回答

2

那麼在dnx項目中沒有.csproj dnu生成項目所需的所有東西都包含在project.json中。有一個xproj文件,但你可以忽略它。微軟終於決定看到光照,並將xproj僅用於VS特定的「內容」,而IDE不可知的項目細節放在project.json中。

因此,要構建一個dnx項目,您需要的只是dnx和項目源代碼的正確版本。現在AFAIK沒有開箱即用的解決方案,但是所有的事情都是通過命令行命令完成的,所以腳本應該很簡單。這完全取決於您想要構建的解決方案的強大程度。

要從命令行構建一個dnx項目(假設您已安裝正確的dnx並將其設置爲活動狀態),它只是兩個命令。 dnu restore運行依賴關係檢查,並且dnu(dnx的一部分)具有內置的nuget客戶端,因此如果需要,它將伸出並獲取依賴關係。 dnu build運行該實際編譯。

因此,cd到項目根目錄(其中包含project.json)並運行dnu restore,然後dnu build

如果您需要動態支持不同的dnx版本,它會變得更加複雜。請記住,dnx版本由運行時(coreclr或clr),體系結構(x86,x64等)和版本號來標識。因此,如果您只是想讓x64構建在clr(完整的.net運行時)上,並消除兩個變量,但是如果項目需要比構建服務器上安裝的版本更新的運行時版本,會發生什麼情況?舉個例子,你在生成服務器上安裝(手動使用dnvm)dnx-clr-win-x64.1.0.0-beta4,但在將來某個時候,開發人員需要dnx-clr-win-x64.1.0.0- beta6-1200來解決一個錯誤。

簡單的解決方案只是根據需要安裝新的運行時版本,並根據需要構建所有項目。這並不像聽起來那麼糟糕。一旦dnx退出測試版,對運行時的更改應該不經常發生。請記住,運行時是非常低級的代碼和非託管dll。這是BCL位於頂端的引導存根。希望對於給定的操作系統,體系結構和運行時不應該有那麼多的dnx更改。

對於更強大的解決方案,您可以使用腳本查找項目所需的運行時版本。它在解決方案級別global.json中找到。該腳本然後可以使用dnvm list來確定是否安裝了該運行時。如果沒有,則使用dnvm installdnvm upgrade來安裝所需的版本。在開始構建之前,它將使用命令dnvm use使正確的運行時激活,然後繼續使用dnu restorednu build

老實說,我期望一些非常強大的解決方案來。任務運行者(吞嚥,咕嚕等)是.NET 5中的頭等公民。很可能您的工作流將涉及客戶端依賴解決方案,npm,grunt/gulp和一些用於縮小js文件等任務包的bower。構建服務器將需要所有這些,因此將構建任務作爲一個咕嚕或吞嚥包似乎是一個很好的選擇。