2018年10月31日 星期三

Visual Studio 2017由Git Server取得現有專案

這篇文章將說明如何使用Visual Studio 2017,透過Git版本控管套件,從Git伺服器端來讀取專案程式檔案,然後修改程式後,再推送至Git伺服器端。

⬛開啟Visual Studio 2017,點選上方功能選單中[工具]>[選項],會出現選項視窗,在左側選項中點選[Source Control]後,於視窗右邊選擇"Git"項目,再按下[確定]後就完成了環境的設定

⬛現在準備從Git伺服器端來讀取專案程式檔案,點選上方功能選單中[檔案]>[開啟]>[從原始檔控制開啟],然後在Team Explorer的本機Git存放庫區段,點選[複製]後,在下方的文字方塊中,分別輸入Git伺服器端的位置與本地Git儲存庫的路徑,再按下[複製],此時可能會看到一堆命令視窗閃過。



⬛於解決方案總管視窗中,將資料夾檢視切換成方案總管檢視。



⬛然後找一支程式,隨意加入幾行程式碼,於該程式檔案上面按右鍵後,點選[認可]。



⬛接下來在右邊Team Explorer-變更畫面中,輸入變更的原因,再按下[全部認可],將變更的內容推送至本地Git儲存庫。



之後會出現完成本地Git儲存庫推送成功的訊息,並貼心提醒還需要同步至Git伺服器端。



⬛接下來將本地Git儲存庫的變更內容,同步至Git伺服器端。於Team Explorer-首面,按下[同步]。



⬛自動切換至於Team Explorer-同步處理畫面後,點選"同步"(或推送)後,就會將本地Git儲存庫的變更內容,同步至Git伺服器端。

























⬛最後在Team Explorer-同步處理畫面,會出現已成功處理的訊息。


⬛最後再到Git伺服器的管理介面去驗證一下,OK。























2018年10月30日 星期二

Visual Studio 2012 安裝 Visual Studio Tools for Git - 上傳至Git Server


這篇將說明如何在Visual Studio 2012安裝Visual Studio Tools for Git擴充功能,然後將程式碼推送至Git Server。

⬛開啟Visual Studio 2012,點選上方功能選單中[工具]>[擴充功能和更新],然後出現擴充功能和更新視窗之後,在左側選項中點選[線上],並在右上方搜尋文字方塊中輸入"git"關鍵字後,再按下Enter鍵,視窗中間會出現符合條件的相關套件,選擇"Visual Studio Tools for Git"後,按下[下載]。

⬛下載功能會以開啟瀏覽器的方式進行檔案下載,下載完成後,前往下載預設的資料夾中,執行"Microsoft.TeamFoundation.Git.Provider.msi"進行安裝該擴充功能。








⬛出現安裝視窗後,按[Install]開始安裝,在完成安裝後按下[Finish]。

⬛記得重啟Visual Studio 2012,然後點選上方功能選單中[工具]>[選項],出現選項視窗後,於左側選項中點選[原始檔控制],然後在右方的"目前的原始檔控制外掛程式"選項中選擇"Microsoft Git Provider",按下[確定]後就完成了環境的設定。


⬛接下來演練如何將程式碼推送至Git Server,首先新增一個新的專案,輸入名稱與路徑後,[Add to source control]先不要勾選,後面將說明如何加入Git版本控管,按下[確定]後完成專案的新增作業。




⬛首先於專案中新增一支WebForm程式,並取名為"WebForm1",然後開啟"WebForm1.aspx.cs"程式檔,於編輯視窗中輸入一些簡單的程式碼,全部存檔後,於方案總管視窗中,在方案檔上面按右鍵,出現選單後點選"Add Solution to Source Control",此時若出現一個視窗要求選擇Source Control工具的話,直接點選Git,然後按下[OK]。

此時在方案總管中可以看到程式檔的左側出現"+"的符號,代表該專案已結合版本控管功能,接下來要將程式碼推送至本地Git儲存庫,之後再同步至Git伺服器。於方案總管的方案檔上面按右鍵後,在選單中點選"Commit",然後在Team Explorer中,輸入變更原因"新增專案",再按下[Commit]按鈕,之後會出現完成本地Git儲存庫推送成功的訊息,並貼心提醒還需要同步至Git伺服器端。



⬛此時在方案總管中可以看到程式檔的左側已變成"鎖"的符號,代表程式已推送至本地Git儲存庫,接下來要同步至Git伺服器。切換至Team Explorer的首頁,點選"Unsynced Commints",於推送至遠端儲存庫的文字方塊中輸入位置,按下[Publish]鍵後,完成推送的設定,再按下[Sync]鍵,將本地端儲存庫與伺服器端進行同步。


⬛然後至Git伺服器的管理介面去查看推送的記錄。


2018年10月11日 星期四

Visual Studio 無法寫入設定檔案,因為權限不足

最近接了一個新工作, 拿到一個別人開發的專案, 但是無法正常開啟, 如下圖。


為了快速解決這個問題, 索性就把有問題的資料給刪除了, 在備份.vs資料夾後, 刪除該資料夾。





 太好了, 可以正常開啟。


2017年4月3日 星期一

使用Jenkins進行ASP.NET自動化部署

這篇將說明如何在Windows作業系統上,使用Jenkins軟體,從版本控管Subversion取得ASP.NET專案程式,在本機上進行自動化部署作業。

一、準備作業

⬛安裝Jenkins軟體,請參考Jenkins 安裝教學
⬛安裝Sbuversion版本控管軟體,請參考Subversion Server for Windows
⬛準備發行之ASP.NET專案,請參考Visual Studio 單鍵發行使用Web.config轉換語法進行差異化部署,並將程式碼簽入Subversion Server控管。


二、安裝MSBuild Plugin與Subversion Plug-in與套件

⬛開啟Jenkis管理介面,執行左側功能選單中[管理Jenkins],然後於內容中點選[管理外掛程式]。

⬛在管理外掛程式的內容中,先點擊[可用的]頁籤,然後勾選[MSBuild Plugin]套件,然後按下[直接安裝]。
因為Jenkins套件數量破千,要尋找某一個套件並不容易,畫面上有個小技巧很好用,若已知套件部分或全部的名稱,在過濾條件輸入關鍵字後,自動顯示符合關鍵字之套件名稱。

⬛在Update Center的的內容中,會顯示正在安裝/升級Plugins的的套件清單,與安裝的進度狀態。

⬛在安裝Jenkins時,預設的安裝套件中,應該已安裝Subversion Plug-in套件,若沒有,請依照上述步驟安裝[Subversion Plug-in]。

三、Jenkins環境設定

這節將對MSBuild與Subversion進行環境設定,以方便日後常態性使用。

⬛MSBuild:開啟Jenkis管理介面,執行左側功能選單中[管理Jenkins],然後於內容中點選[Global Tool Configuration]。

在Global Tool Configuration的內容中,先找到[MSBuild]區段,然後按下[MSBuild 安裝...]鈕,進行新增MSBuild參數設定。

⬛在Name輸入.net framework 4.0,Path to MSBuild輸入C:\Windows\Microsoft.NET\Framework\v4.0.30319,然後按下[Save]鈕儲存設定。
視需要可以新增多個.Net framework版本。

⬛Subversion:開啟Jenkis管理介面,執行左側功能選單中[管理Jenkins],然後於內容中點選[設定系統]。

設定系統的內容中,先找到[Subversion]區段,Subversion 工作區版次選擇[1.7],然後按下[儲存]

那要如何得知Subversion 工作區版次呢?
檢查受SVN控管的專案目錄底下.svn/format或.svn/entries,其版本與工作區版次對應如下。
Version 7 is SVN 1.3
Version 8 is SVN 1.4
Version 9 is SVN 1.5
Version 10 is SVN 1.6
Version 12 is SVN 1.7

四、Jenkins作業

接下來終於要新增作業來進行自動化部署。

開啟Jenkis管理介面,執行左側功能選單中[新增作業]。

輸入作業名稱WebApplication1,並在下方作業類型中選擇[建置 Free-Style 軟體專案],然後按下[OK]。

⬛在[General]頁籤中,不需修改任何內容。

⬛在[原始碼管理]頁籤中,點選[Subversion]作為原始碼的資料來源,Repository URL輸入https://localhost/svn/Demo/WebApplication1,Credentials選項下拉後,選擇可以存取該Repository的帳號與密碼(可以點擊選項右方[Add]鈕進行新增帳號與密碼)。

⬛在[建置觸發程序]頁籤中,可同時存在多種觸發方法,這裡設定遠端觸發建置與定期建置,[遠端觸發建置]需另外開啟一個瀏覽器,並輸入指定之 URL進行觸發建置,[定期建置]輸入00 22 03 * *,代表每個月的03號22時00分就會執行一次。

⬛在[建置環境]頁籤中,勾選[Delete workspace before build starts]選項,代表作業在每次建置之前,都會將工作區內的原始碼清空,以確保每次都會從原始碼管理再下載一份新的程式。勾選[在「畫面輸出」中加入時間戳記],代表作業在建置過程中所產生的記錄檔會有時間戳記。

⬛在[建置]頁籤中,[MSBuild Version]下拉選項點選.net framework 4.0,[MSBuild Build File]輸入WebApplication1.sln,[Command Line Arguments]輸入下面參數字串。

/p:DeployOnBuild=true /p:PublishProfile=Release


⬛按下[儲存],完成新增作業的設定。

⬛回到專案WebApplicaton1的管理介面,可以執行左側功能選單中[馬上建置],來驗證一下設定的內容是否正確。下方建置歷程中#1作業亮起藍燈,代表建置作業成功。

⬛開啟瀏覽器來進行遠端觸發作業,輸入http://localhost:8080/job/WebApplication1/build?token=123456。

⬛點選建置歷程#2,第一行便顯示此次建置是由遠端主機啟動。

⬛因為有預設定期建置的時間,剛好時間一到而觸發建置作業,查看建置歷程#3的記錄。


自動化部署完成!

2017年4月2日 星期日

使用Web.config轉換語法進行差異化部署

這篇將延續上篇Visual Studio 單鍵發行,說明使用單鍵發行功能,在實務上要如何因應不同環境(如本機正式、測試與開發環境),進行Web.config檔的差異化部署,例如資料庫連線字串或其他參數在不同環境下,其內容值也會不同。

一、本機環境

這節將說明在本機環境進行開發與測試。

⬛編輯Web.config檔,在configuration節點底下,新增下列參數設定。
<configuration>
  <appSettings>
    <add key="ServerName" value="localServer"/>
    <add key="API" value="http://localhost"/>
  </appSettings>
  <connectionStrings>
    <add name="DB" connectionString="Data Source=.;Initial Catalog=Northwind;Persist Security Info=True;User ID=userName;Password=password" providerName="System.Data.SqlClient" />
  </connectionStrings>
    <system.web>
      <compilation debug="true" targetFramework="4.0" />
    </system.web>
</configuration>

⬛編輯Default.aspx.cs程式檔,在Page_Load事件中,新增下列程式碼,主要目的是要把Web.config檔中的參數設定顯示於頁面上。
protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("ServerName=" + System.Configuration.ConfigurationManager.AppSettings["ServerName"].ToString() + "<BR/>");
    Response.Write("API=" + System.Configuration.ConfigurationManager.AppSettings["API"].ToString() + "<BR/>");
    Response.Write("DB=" + System.Configuration.ConfigurationManager.ConnectionStrings["DB"].ToString() + "<BR/>");
}

⬛最後按下[開始偵錯 ]執行程式,確認網頁程式有將本機環境所使用的參數檔內容,成功的顯示出來。


二、正式環境

這節將延續第一節本機環境結果,說明在本機開發作業完成後,如何進行正式環境部署。

⬛編輯Web.Release.config檔,在configuration節點底下,新增下列參數設定。

  <appSettings>
    <add key="ServerName" value="ReleaseServer" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    <add key="API" value="http://10.10.10.51" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
  </appSettings>
  <connectionStrings>
    <add name="DB" connectionString="Data Source=ReleaseHostName;Initial Catalog=Northwind;Persist Security Info=True;User ID=userName;Password=password" providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
透過Web.config 轉換語法可以因應不同環境的需要,進行差異化部署。xdt:Locator:Locator 屬性指定您想要以某種方式變更的 Web.config 項目或項目集,xdt:Transform:Transform 屬性指定您要對 Locator 屬性找到的項目做出何種處理。詳細的內容請參閱Web 應用程式專案部署的 Web.config 轉換語法

⬛滑鼠移動至方案總管的專案WebApplication1項目上點擊右鍵,於快顯選單中點選[發行]功能,開啟發行Web視窗,選擇先前新增好的設定檔Release,按下[發行]鈕。

⬛發行作業完成後會自動開啟網頁瀏覽,查看參數檔內容,已經改為正式環境所需要的內容值。

⬛最後再到正式環境路徑下驗明正身,打開Web.config檔,再次確認部署的內容值。
正式環境部署完成!

三、測試環境
⬛測試環境的部署方式,請仿照第二節正式環境來依樣畫葫蘆,就可以完成測試環境的部署。

四、開發環境
在多人開發的情形下,可能會有需要建置開發環境,這節將說明如何新增Develop設定檔來進行部署作業。

⬛ 開啟Visual Studio 開發工具>建置>組態管理員。

⬛點擊使用中的方案組態下拉選單,選擇[新增]項目。

⬛在新增方案組態視窗中,輸入名稱Develop,複製設定值來源Debug,勾選建立新專案組態,先按下[確定]鈕,然後在組態管理員視窗中再按下[關閉]。

⬛滑鼠移動至方案總管的Web.config項目上點擊右鍵,選擇[新增設定轉換]功能。

⬛此時在Web.config檔的依存檔案中,會增加一個Web.Develop.config檔

⬛編輯Web.Develop.config檔,在configuration節點底下,新增下列參數設定。
  <appSettings>
    <add key="ServerName" value="DevelopServer" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    <add key="API" value="http://10.10.20.36" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
  </appSettings>
  <connectionStrings>
    <add name="DB" connectionString="Data Source=DevelopHostName;Initial Catalog=Northwind;Persist Security Info=True;User ID=userName;Password=password" providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>

⬛滑鼠移動至方案總管的專案WebApplication1項目上點擊右鍵,於快顯選單中點選[發行]功能,開啟發行Web視窗。執行功能在選取或匯入發行設定檔(下拉選單)>新增設定檔。

⬛ 在出現新增設定檔窗後,輸入設定檔名稱為Develop後按下[確定]。

⬛輸入連線參數,發行方法選擇Web Deploy(單鍵發行),伺服器輸入localhost,網站名稱輸入DemoSite/DevelopWebApp,目的地URL輸入localhost/DevelopWebApp/Default.aspx,然後按[下一個]。

⬛組態選擇Develop,然後按[下一個]。

⬛可直接按下[發行]鈕,開始進行開發環境的部署。

⬛可以在Visual Studio 開發工具的輸出視窗中,查看發行作業的歷程記錄,發行作業完成後會自動開啟網頁瀏覽,查看參數檔內容,已經改為開發環境所需要的內容值。

⬛最後再到開發環境路徑下檢查Web.config檔,再次確認部署的內容值。
開發環境部署成功!