簡體   English   中英

Mono XBuild發布MVC網站

[英]Mono XBuild publish MVC site

我已經在Ubuntu中運行了Monoserve和Nginx,但是我仍然需要使用MSBuild在Windows機器上本地發布網站,然后復制文件。

我希望有一個Linux CI服務器,而不是使用XBuild,但我只能將它構建到.dll中,如何使用js,css,views等發布和部署它?

通常,“構建dll”部分是最難的部分。 如果你已經解決了,那你就80%了。 另一半是發布內容。 在最基本的方面,您將部分文件從源目錄復制到網站文件夾。 MSDeploy是微軟對它的回答,它太復雜了。 我構建了一個執行此操作的NAnt任務,但這也不適用於您的特定方案。 但是,一般方法可以:

  1. 抓取sln文件尋找Web項目。 什么是網絡項目? 技術上在csproj文件中的guids或sln文件中的項目類型id。 我作弊並將其定義為“目標文件夾包含web.config文件”。 如果您的解決方案中只有一個網站項目,則可以跳過此步驟,只需對.csproj文件進行硬編碼即可。

  2. 抓取csproj文件,查找<Content Include="some\\file.ext" />節點。 XPath可以做到這一點,Linq to XML也可以做到這一點。 這會給你所有.aspx,.cshtml,.js,.css,.png,.config等等,同時小心地留下所有的.cs文件。 您需要在.csproj文件的路徑前添加前綴以獲取真正的原始文件位置,並且您希望確保在目標位置保留文件夾結構。 但與收獲文件列表相比,這是微不足道的。

  3. 現在你已經有了文件列表,循環它從源文件夾復制到目標文件夾。 (您可能希望首先清空目標文件夾,或者之后從以前的部署中刪除額外的文件。我發現前者更容易。)csproj文件爬網唯一沒有給你的是bin文件夾內容,但那是蛋糕:copy bin文件夾的所有內容。 :D(關於是否復制.pdb文件有一個健康的爭論,但我說是的。)

形成一個腳本來執行上述3個步驟,然后從XBuild任務中調用它,或者從CI過程調用XBuild和此腳本。 噗。 你有一個部署目標。 快樂的編碼!

我希望有一個Linux CI服務器來代替使用XBuild 。好消息是你可以通過我在本文中找到的解決方法來實現這一點 以下是上述文章的摘錄和解決方法鏈接:

構建服務器未安裝Microsoft MVC(任何版本)。 但是,這很容易解決 - 如果您需要安裝舊版本,可以在NuGet上的http://nuget.org/packages/Microsoft.AspNet.Mvc上找到Microsoft MVC,點擊底部的舊版本該頁面,您將獲得有關如何安裝該版本框架的說明。

希望這能讓你輕松!

@DHarun的想法很棒! 我剛剛根據@Dharun的想法寫了一個小腳本,希望它可以幫助別人。 https://github.com/z-ji/MonoWebPublisher

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM