Quantcast
Channel: MSDN 台灣部落格
Viewing all 136 articles
Browse latest View live

Linux 工程師新法寶 –在 Visual Studio 上用 C++ 寫 Linux 程式

$
0
0

如今我們正在開發一個新的插件,一個能夠讓開發者在 Visual Studio (以下簡稱 VS ) 上建構能夠在 Linux 上運行 C++ 程式碼的套件。開發者可以藉由這個插件將 C++ 程式碼移轉到 Linux 伺服器、桌機以及行動裝置上,也同時可以藉由這個插件將這些機器連結至你的 VS 上。VS 將會自動地複製一份並在遠端建構你的來源檔,再運行帶有除錯器的應用程式。我們的這項計畫也針對特殊的架構提供系統支援,包含 ARM 等。下方文章將繼續介紹使用我們這套全新的 Linux 計畫。

目前我們僅支援在遠端的目標 Linux 機器提供建構服務。我們並沒有限制特定的 Linux 發佈版本,但我們仍舊在一些工具的表現上有些相依性的差異。需要特別注意的是,我們需要 openssh-server、g++、gdb 以及 gdbserver。用你最習慣的套件管理工具來安裝他們,例如在 Debian 類型的 Linux 就可以使用:

sudo apt-get install openssh-server g++ gdb gdbserver

安裝

下載 Visual C++ for Linux Development extension 或從 Visual Studio 上的插件管理員來獲得。目前我們在 Visual Studio 上的 Android Tools 上已有相依支援。如果你已經安裝了 VS 的話,你可以藉由 Add Remove Programs 來新增這些功能,編輯 VS 然後在 Visual C++ 行動裝置開發下選擇他們。

要開始一個新的專案可以透過以下路徑:Templates > Visual C++ > Cross Platform > Linux

1

目前我們有三個可以使用的模板:針對像 Raspberry Pi 等物聯網裝置設計的 Blink、最基本的應用程式樣板 Console Application 以及讓開發者自己選擇需要加入的來源檔以及從預設設定起的 Empty。

你的第一個 VS Linux 專案

我們從建構一個主控台 app 開始。從模板新增完你的專案後,在 printf 敘述句的地方設下一個中斷點,然後敲擊 F5 或遠端 GDB 除錯器按鈕。根據預設值,這個主控台 app 設定與 debug/x64 的環境相容。如果你的遠端連線標的是 x86 或 arm 架構,那你需要先改變上述設定。在我演示的這個範例我使用的是 x64 Ubuntu VM。

ArchOptions

由於這是第一次連結到標的的 Linux 機器,所以會彈出一個連接資訊視窗,是由在建構專案時所觸發的。

Connect-to-Linux-first-connection

我們同時支援密碼以及認證形式的驗證方式,包含使用複雜密碼的認證。在第一次成功連接後,我們會將你的連結資訊儲存以便在日後需要連接時快速存取。你可以從 Tools > Options > Cross Platform > Linux 的路徑來管理你已儲存的連結資訊,以及是的,密碼/複雜密碼是已加密形式儲存的。我們也同時計劃在未來的更新版本中,在連接時無需儲存連結資訊。

在連接的過程中,你的來源檔會被複製到遠端的 Linux 機器上,並觸發 gcc 並根據專案的屬性設定來建構原始碼。在專案建構完畢之後,你的程式碼將會在遠端的機器上執行,並停止在我們先前所設下的中斷點上。

Linux 專案屬性

我們可以藉由以下的專案屬性來理解,東西是怎麼被部署到遠端 Linux 機器上的。

2

在 remote settings 下,你可以看到 remote 根目錄是預設在 ~/projects/ ,且該路徑下的遠端專案目錄會與我們的專案名稱相符。從 Linux 機器上去看的話,我們可以在 ~/projects/ConsoleApplication1 下發現建構後的成品 main.cpp

OutputTypes

根據專案的 General setting,可以了解到我們針對 Output 以及 Intermediate 路徑是怎麼設定的。除此之外,你可以發現到這個專案是被設定成一個應用程式的 — 代表我們的專案執行檔 ConsoleApplication1.out 是在 bin/x64/Debug/ 路徑下。另外可以注意到的是,我們也同時支援靜態以及動態的設定格式。

Linux 物聯網專案

現在我們來研究物聯網裝置的部分 — 以 Raspberry Pi 為例。你可以使用任何類型的 Pi 來執行 Raspbian。在我們的 Blink 範例裡我們使用 wiringPi — 如果你沒有這個安裝選項你也可以選擇從 apt 或來源檔來安裝。在 Tools > Options 搜尋 Linux 來新增一個連結,然後點擊 “add” 來新增一個連結到你的 Raspberry Pi。

PiConnection

從專案屬性設定的地方查看 Build Events 下的 Remote Post-Build Events。

Remote-post-build-event

你可以藉由這個設定在遠端已建構好專案的 Linux 標的上執行指令。這個模板已先預設了針對 LED 輸出的 GPIO pin,所以我們不需要再以 root 的身份執行我們的執行檔。

現在將一個 LED 連接到 Raspberry Pi 上的 pin 17 位置(如下圖)。

LEDWiring-276x350

打開 main.cpp 檔,並在第一個 digitalWrite 後 delay call 的地方設下中斷點,然後敲擊 F5。你可以看到你的 LED 燈亮起,且執行程序會在你下中斷點的地方停住。將你的程式碼持續執行到下一個 digitalWrite call 之後便可以看到 LED 燈熄滅。

可以透過瀏覽我們的物聯網研發專頁,來追蹤所有我們目前針對這樣的系統所釋出的功能。

桌面應用程式

我們剛已在上述的文章中,介紹了無介面 (headless) 以及裝置型的 Linux 應用程式,那桌面型的呢?在這裡我們將介紹一點特別的:我們將在 Linux 桌面上執行一個 OpenGL 應用程式。首先要確定的是,你的 Linux 桌面已經設定為包含 OpenGL 的環境,下述是我們會需要用到的 apt 套件:libgles1-mesa、libgles1-mesa-dev、freeglut3 以及 freeglut3-dev

接下來請先創建一個空的 Linux 專案,然後前往 Julien Guertault’s OpenGL 教學下載旋轉方塊的來源檔,將其解壓縮並將 main.c 加到你的專案下。要能夠運行 Intellisense,你需要將 OpenGL 的標頭 (headers) 新增到 VC++ Directories,你可以從 OpenGL Registry 裡下載他們。現在前往你的專案屬性設定,然後新增 export DISPLAY=:0.0 到 Pre-Launch command 下。

Linker-input

然後,在 Linker Input 下新增 “m;GL;GLU;glut” 到 Library Dependencies 欄位。

另外,確認你的遠端設定是對應到對的機器。

ChangeRemote

接下來按下 F5。

UbuntuSpinningCube

還有一些有趣值得下中斷點的地方,例如大約在 80 行左右的位置有可以調整方塊旋轉的設定(試著調整看看 alpha 值),或在 KeyboardFunc 裡可以檢查按下鍵盤時所輸入的值。

開始實做原生的 Linux 應用

我們期望您與我們對於這些新開放的可能擁有一樣的期待。

安裝 Visual C++ for Linux Development extension,嘗試看看並告知我們哪些是你可以成功運行,以及哪些是你遇到的阻礙或遭遇任何問題。如果你有興趣的領域是在物聯網的部分的話,可以前往關注我們的 IoT Development page 以獲取最新資訊。你可以藉由這個部落格,或展覽頁的額外分頁、VS 回饋頻道以及 Twitter 上的 @visualc@robotdad 或我的帳號聯繫到我們。

本文翻譯自:Visual C++ for Linux Development

banner

opencloudopencloud2


非微軟平台的 C/C++ 開發者有福了! Visual Studio Code 的 C/C++ 語言擴充功能。

$
0
0

今天是一個令 Microsoft C++ 開發團隊非常興奮的日子! 我們很高興能夠提供 C 語言與 C++ 語言的程式開發者使用 Visual Studio 開發 Windows 應用程式非凡的程式開發體驗,我們也知道現階段有些程式設計師,基於某些理由,已經選擇 Linux 或是 OS/X 做為主要的程式開發平台,所以無法利用 Visual Studio 提供的好用功能在程式開發的工作上。今天我們要發佈的就是 C/C++ extension to Visual Studio Code 這個支援在 Linux 與 OS/X 平台編輯和偵錯 C/C++ 程式的新產品的預覽版。

51

如果您尚不清楚 Visual Studio Code 套件的用途,我們可以一起來認識 Visual Studio CodeVisual Studio Code 是一個 Visual Studio 工具家族的新成員,支援 C/C++ 語言的程式設計師簡化程式碼編寫與程式碼偵錯的工作,以滿足程式設計師編寫與偵錯程式碼的需求。目前的 Visual Studio Code 版本只支援對 C/C++ 的原始程式碼很基本的文字色彩標示 (syntax highlighting) 功能,但是 C/C++ extension 預覽版提供了更佳的程式開發體驗,包括快速瀏覽程式碼進行偵錯 C/C++ 應用程式,不過目前這個預覽版還是有一些問題尚未解決,等這些問題解決之後,就可以提供程式設計師更好的開發與偵錯體驗。

在討論以下的內容之前,我會假設您已經下載並設定妥 Visual Studio Code (詳細的做法可以參考:downloaded and configured Visual Studio Code),而且也下載並設定妥本文要為大家介紹的 C/C++ extension 預覽版。我將會在這篇文章中為大家介紹好用的編輯功能、強大的偵錯功能、以及編譯與建置您的程式碼的選項。最後在文末我會提供一些有用的連結,讓讀者能夠反應產品的問題、提供產品的功能建議,並針對我們的計畫給予回饋意見。

使用 Visual Studio Code 提供的 C/C++ 程式碼編輯協助功能

當 Visual Studio Code 載入包含 C/C++ 原始程式碼的資料夾的時候,語言服務引擎會立即啟動,而標籤剖析程式 (tag-parser) 就會開始剖析包含 C/C++ 原始程式碼的資料夾,並建立一個負責存放剖析得到的符號資訊的離線資料庫 (即名稱為 browse.VC.db 的檔案)。您可以於 Visual Studio Code 的狀態列看到剖析動作的執行狀態,例如: C_Cpp:Parsing …。

52

當剖析原始程式碼的工作結束,Visual Studio Code 的狀態列就會顯示:C_Cpp:Ready,表示您可以開始體驗 C/C++ extension 預覽版提供的語言服務功能。C/C++ extension 預覽版提供的語言服務功能目前支援以下的程式碼瀏覽功能。

使用 (Ctrl + P, @符號名稱) 瀏覽同一個原始碼檔案中指定的符號名稱

53

使用 (Ctrl + P, #符號名稱) 瀏覽所有的原始碼檔案指定的符號名稱

54

使用 F12 功能鍵 (Go to definition) 跳至符號名稱的定義

55

使用 Alt + F12 組合鍵 (Peek definition) 檢視符號名稱的定義

56

按住 Ctrl 鍵不放,將滑鼠停駐符號名稱的上方檢視定義

57

這些預覽版提供的瀏覽體驗還有一些功能的問題尚未解決。雖然 Go to definition 與 Peek definition 功能在大部分的場合都能夠正常運作,但是目前還未支援瀏覽區域變數的定義,主要是因為標籤剖析程式目前並不會剖析函式內部的程式碼。除此之外,標籤剖析程式目前也未提供語意分析功能,Go to definition 與 Peek definition 功能目前只會利用標籤剖析的結果與程式設計師欲瀏覽的符號進行文字比對,我們會繼續努力,讓瀏覽功能更上一層樓。

雖然目前的語言服務可以為程式設計師帶來超越傳統瀏覽功能的體驗,如果您可以提供更多的資訊,例如除了 Visual Studio Code 開啟的工作目錄以外,專案引用的標頭檔的其他資料夾名稱,您將可以獲得更佳的瀏覽體驗。未來我們將會利用這樣的機制,透過獲取更多的資訊,以提供更多的語言服務,例如提供 Auto-Complete 功能。

當您在瀏覽您的原始程式碼的時候,如果發現有些原始引入的標頭檔的下方會出現波浪線,表示 Visual Studio Code 在現有的原始程式檔案所在的資料夾及其子資料夾找不到指定的標頭檔,您只要將滑鼠的游標停駐在找不到的標頭檔的上方,其下方就會出現一個燈泡的圖示,讓您可以很方便地加入原始程式檔引用的標頭檔存放的資料夾路徑到名稱為 ‘c_cpp_properties.json’ 設定檔中。

您只要將原始程式檔欲引用的標頭檔所在的資料夾路徑加入到 ‘c_cpp_properties.json’ 設定檔的 “includePath" 屬性,就可以利用所指定的標頭檔的內容提供更完整、更精確的語言服務體驗。

使用 Visual Studio Code 偵錯 C/C++ 應用程式

C/C++ extension 預覽版除了支援更佳的原始程式檔瀏覽體驗以外,也支援程式開發者使用 Visual Studio Code 偵錯 C/C++ 應用程式的優良功能。程式開發者能夠使用目前所有已熟悉的標準偵錯功能,包括設立和設定中斷點、逐步執行、檢視變數內容、以及檢視呼叫堆疊的內容。有了 C/C++ extension 預覽版之後,程式開發者能夠透過更進階的偵錯功能進行偵錯應用程式的工作,包括設立函式中斷點 (function breakpoint)、評估運算式執行的結果 (expression evaluation)、設定條件中斷 (conditional breakpoint)、以及利用記憶體傾印偵錯 (core dump debugging)。

69

C/C++ extension 預覽版支援的偵錯功能目前只能適用於 Ubuntu 14.04 (x64) 版本的 Linux。未來我們將會推出支援 OS X 系統的 C/C++ extension。支援 Ubuntu 14.04 (x64) 的 C/C++ extension 需要手動執行安裝的動作,而且仍然有一些限制,詳細的說明請參考這篇文件:the current experience requires manual installation steps and has some limitations。請注意,目前尚未支援使用 Visual Studio Code 在 Windows 作業系統對 C/C++ 應用程式進行偵錯。

偵錯相關的設定

在您使用 Visual Studio Code 進行偵錯 C/C++ 應用程式之前,您必須完成一些設定。首先請點選工具列最左方的 Debug 圖示,開啟 Debug View,點選 debug pane 中齒輪形狀的按鈕執行設定的工作,並選取 “C++ Launch (GDB)",將 launch.json 檔案開啟。

launch.json 檔案負責定義偵錯工具與被偵錯的應用程式之間的溝通方式。這個檔案預設包含兩項設定 – 其中一項設定負責定義 Visual Studio Code 啟動被偵錯的應用程式的相關屬性,另外一項設定則負責定義附加執行中的應用程式到偵錯工具的相關屬性。將滑鼠的游標停駐在屬性的上方,可以從出現的功能提示了解該屬性的用途與可以接受的設定值。您至少需要完成 “program" 屬性的設定,將屬性的內容值設定成欲偵錯的應用程式名稱與完整的路徑。有興趣的讀者可以閱讀這篇文件,以了解 launch.json 設定檔的各種屬性的用途與相關的設定:VS Code debugging documentation

設定妥 launch.json 設定檔中的必要屬性之後,您就可以開始偵錯 C/C++ 應用程式了。請注意 Visual Studio Code 並不會建置您的應用程式,Visual Studio Code 預設只會偵錯建置妥的應用程式,除非您預先建立名稱為 task.json 的設定檔 (詳細的做法請參考:create a task.json file),再設定給 launch.json 設定檔的 preLaunchTask 屬性,當做屬性的內容值。

函式中斷點 (Function Breakpoint)

函式中斷點支援程式開發者於函式的入口設定中斷點,而不是將中斷點設定在函式中的某一行程式碼。您可以於 Visual Studio Code,使用滑鼠的右鍵點選 breakpoints 面板,執行 “Add Function Breakpoint" 功能,然後再輸入欲加上中斷點的函式名稱即可。

70

評估運算式執行的結果 (Expression Evaluation)

偵錯 C/C++ 應用程式需要比在應用程式中斷執行時檢視變數的內容值更強大的功能。支援 Visual Studio Code 的 C/C++ extension 預覽版支援在不同場合使用 Expression Evaluation 功能。您可以於 Watch pane 輸入欲評估的運算式,當應用程式進入中斷模式時,所輸入的運算式就會被評估,並顯示出評估的結果。請注意這個功能會有副作用 – 如果所輸入的評估運算會變更的內容值,則在被偵錯的應用程式執行結束之前,每一次評估運算式被執行都會造成變數的內容值被變更。如果您只要檢視運算式執行的結果,您可以在被偵錯的應用程式進入中斷狀態時,將滑鼠的游標移至程式碼編輯視窗中運算式的上方,運算式運算的結果就會以提示的方式顯示。如果您只要知道運算式執行的結果即可,不需要不斷地監視,您可以不需要將運算式輸入到 Watch pane 進行監控,您可以將運算式輸入到 Debug Console 中,同樣能夠知道運算式執行的結果,但是可以避免運算式不斷地被評估。

71

條件中斷 (Conditional Breakpoints)

程式開發者可以使用滑鼠右鍵點選所設定的中斷點,執行 “Edit breakpoint" 功能,Visual Studio Code 就會在程式碼編輯視窗開一個小視窗,您可以在小視窗中輸入條件式,例如:"i> 15″,表示所設定的中斷點會在指定的條件式運算的結果為真 (true) 的時候中斷被偵錯的應用程式的執行。有加上條件式的條件中斷會在中斷點的圖示上加上一個黑色的等號。您只要將滑鼠游標移至條件中斷的上方即可檢視條件中斷的設定。

72

記憶體傾印偵錯 (Core Dump Debugging)

C/C++ extension 預覽版也支援進階的記憶體傾印偵錯。首先您必須在 launch.json 設定檔加入 “coreDumpPath" 屬性,並把屬性的內容值設定成記憶體傾印檔的位置。這個功能同樣適用於偵錯多執行緒的應用程式,以及偵錯於 x64 電腦執行的 x86 應用程式。

GDB 與 MI 命令

程式開發者可以在 [debug console] 利用 “-exec" 直接執行 GDB 命令 (請注意在 debug console 直接執行 GDB 命令的功能尚未經過測試,所以在某些場合會造成 Visual Studio Code 發生執行時期錯誤而結束執行)。有關使用 Visual Studio Code 偵錯 C/C++ 應用程式的詳細做法可以參考這篇文件的說明:A full introduction to debugging in VS Code is available here

示範使用 C/C++ extension 預覽版的功能:

73

您可以點選這個連結觀賞高畫質的示範影片:channel 9 discussion on VS Code here.

讓我們知道您的想法!

這個支援 Visual Studio Code 進階的原始碼瀏覽功能與應用程式偵錯功能的 C/C++ extension 預覽版只是一個開始,我們需要您的回饋意見讓這個工具可以提供程式開發者更好的程式瀏覽與偵錯體驗。如果您願意協助我們在任何平台提供最佳的 C/C++ 應用程式開發支援,請加入這個群組:join our Cross-Platform C++ Insiders group,加入這個群組之後您可以直接和產品開發團隊對話,影響產品團隊在產品功能的投資。如果您希望可以馬上擁有某些支援應用程式開發的功能,您可以利用以下的連結輸入您對 Visual Studio Code 的功能的建議:Visual Studio Code user-voice,我們將會優先處理這些建議。

感謝您耐心閱讀完本文,如果您在使用 C/C++ extension 預覽版的功能發現問題,可以透過這個電子郵件反應給我們:bugs you report,對功能面的需求可以到這個網址反應:requests you want us to consider。如果不是功能執行有問題,也不是對需要的功能的建議,可以直接在本文下方留下您的意見 – 我們的團隊會留意本部落格的意見回應。最後,當然不要忘了到以下的網址下載 C++ Extension 預覽版並進行試用:download the C/C++ extension for VS Code

 

本文翻譯自:C/C++ extension for Visual Studio Code

 

banner

opencloudopencloud2

快速、免費、功能強大的 Android 模擬器 – Visual Studio Emulator for Android

$
0
0

在微軟 Visual Studio 2015 的安裝當中(圖1),增加了很多有關跨平台 App 開發的方式 ( e.g. Cordova、Xamarin…等),讓在 App 開發上已經悶了有點久的 .NET 的開發人員,可以直接在 Visual Studio 當中直接開發各種不同平台的 App。在跨平台開行動開發的選項當中,眼尖的各位一定會發現一個叫做 Microsoft Visual Studio Emulator for Android 的選項可以勾選。

1

(圖1 – Visual Studio 2015 自訂安裝項目的選項)

為什麼需要 Visual Studio Emulator for Android?!

對於開發 Android App 的開發人員來說,Visual Studio Emulator for Android (圖2)真的是一個不可多得的 Android 模擬器利器。

第一,是在當今幾個比較熱門的第三方 Android Emulator ( e.g. GenymotionXamarin Android Player…等),這些解決方案目前都是透過 VirtualBox 的虛擬化技術,來作為執行 Android Emulator 的 App 開發測試環境。但身為一個 .NET 開發人員,想必常需要用到 Hyper-V 這個虛擬化技術做一些軟體與系統上的測試。為了跑 Android Emulator 就必須把 Hyper-V 關閉或者是在開機時切到沒有啟動 Hyper-V 的環境下 (可參考連結1),長期下來也真的令人覺得有點煩躁。

第二,對 .NET 開發人員來說,近期最重要的大事就是開發有關 UWP 的 App 了,如果在一邊開發 UWP App 的同時,也必須一邊確認 Android App 的部分有沒有發生問題,而卻沒有使用 Visual Studio Emulator for Android 來協助作為 Android App 測試,那真的會是你很大的損失。

2

(圖2 – 左為 Window 10 Mobile Emulator 右為 Visual Studio Emulator for Android 能同時在環境上執行)

第三,整個 App 的開發過程中,我們常常不是那個真正負責 App 整體功能 (e.g. 軟硬體的整合問題測試…等) 正確與否的人員,只是負責其中某個功能是否正確,卻必須大費周章地去搞一台實體 Android 裝置,而各廠牌的Android裝置USB Driver都很神奇的各自不相容,更別說有些白牌的 Android 裝置了,要設置起來真的是要求神拜佛一下。而當好不容易設定個半天裝起來的一台實體 Android 裝置,可能過沒多久就要把這台裝置還給真正負責 App 整合功能確認的人。這樣可是浪費掉不少寶貴的時間,不是嗎?!

第四,若是有只想要在 Virtual Machine 裡面裝的開發環境,不想在實際的機器上面安裝 Visual Studio 做開發的人,Visual Studio Emulator for Android 可能就是各個 Android 模擬器方案當中的最後選擇了。據實際測試經驗,例如若要在 VMware Workstation Player 12 當中的 Guest 系統,是沒有辦法再執行 Genymotion 或 Xamarin Android Player 的 Android 模擬器起來的,因為 VMware Workstation Player 12 的虛擬顯示卡不支援 OpenGL 2.0 的部分,所以無法執行。但若透過一些適當的設定 (可參考連結2),能將 VMware 當中的 Guest 系統的 Hyper-V 執行起來,那就可以順利的使用 Visual Studio Emulator for Android 了 (圖3)。

3

(圖3 – 在 VMware 虛擬機的 Guest 環境中若設定好 Hyper-V 仍執行 Visual Studio Emulator for Android)

Visual Studio Emulator for Android 整合 IDE 開發工具的便利性

以往在 Visual Studio 當中我們開發的程式想要直接執行測試程式的話,只要利用按下快捷鍵 F5 就可以針對程式進行除錯,或利用快捷鍵 Ctrl + F5 執行啟動但不偵錯的動作。所以當在 Visual Studio 中開發 Android App 的時候 (e.g. 使用 Xamarin),若搭配 Visual Studio Emulator for Android 做為模擬器時,這樣的動作仍然是一樣不變的 (圖4)。甚至當該 Android 模擬器還沒有啟動起來時,都還是可以直接按下 F5 或 Ctrl + F5 執行,此時當然就必須等待 Android 模擬器的開機,但這等待的時間也不會太久的。

4

(圖4 – Visual Studio Emulator for Android 的虛擬機器有先建立起來後,可以透過 Visual Studio 直接執行)

若是用 Android Studio 或者是 Eclipse 來開發 Android App 的開發者,透過一些設定的動作後 (見參考資料3),也可以將 Visual Studio Emulator for Android 整合到這兩個 IDE 開發工具來使用。(圖5-1 與 圖5-2)

5

(圖5-1 – Visual Studio Emulator for Android 的模擬器整合到 Android Studio 當中直接執行)

6

(圖5-2 – Visual Studio Emulator for Android 的模擬器整合到 Eclipse 當中直接執行)

(註一)

Visual Studio Emulator for Android 與模擬器裝置的簡單介紹

當 Visual Studio Emulator for Android 預設安裝好時,就會裝好兩個 Android 模擬器 (圖6-1),當然後續可以再根據所需的 Android 環境下載適合的模擬器裝置 (圖6-2)。

7

(圖6-1 – Visual Studio Emulator for Android 安裝好時會預設裝上兩個 Android 模擬器)

8

(圖6-2 – 在 Visual Studio Emulator for Android 當中下載所需的 Android 模擬器)

在執行起來的 Android 模擬器 (圖7) 旁邊會有個簡單的工具列,這個工具列裡面呈現的是幾個常用的功能 (e.g. 關機、單點滑鼠輸入、多點觸控輸入、向左旋轉、向右旋轉、全螢幕、縮放…等)。

9

(圖7 – Visual Studio Emulator for Android 執行起來的 Android 模擬器)

而在這個工具列的最下面有個工具的選項,點選後可以看到其他工具的視窗出現 (圖8)。在這個其他工具的視窗當中,可以再針對這個模擬器做許多不同硬體裝置的模擬測試 (e.g. 加速計、位置、電池、照相機、SD卡、網路…等)。若是在使用上有需要都可以再好好的研究其相關設定,絕對會比過去所用過的 Android 模擬器的使用經驗,都還要更加優秀的。

10

(圖8 – Visual Studio Emulator for Android 的其他工具設定)

另外相當值得一提的是,Visual Studio Emulator for Android 也即將在 Mac OS X 上推出。

心動了嗎?!那就趕緊到官方網站 (參考資料1) 來下載 Visual Studio Emulator for Android 安裝與使用吧!!!

參考影片:Channel 9 > Visual Studio Toolbox > Visual Studio Emulator for Android

參考資料

  1. Visual Studio Emulator for Android 官方網站
  2. Introducing Visual Studio’s Emulator for Android
  3. Using the Visual Studio Emulator for Android from Android Studio or Eclipse with ADT
  4. 連結1:  Windows 8 Hyper-v 與 vmware workstation 9 共存
  5. 連結2:  在VMWare 安裝 Windows Server 2012 R2 如何開啟 Hyper-V 功能
  6. 註1 : 圖5-1 與圖5-2取自Using the Visual Studio Emulator for Android from Android Studio or Eclipse with ADT 這篇文章。

banner

opencloudopencloud2

讓我們 Core 在一起:ASP.NET Core & .NET Core

$
0
0

Microsoft .NET 自 2002年發行 v1.0 以來,已經過了近 14 個年頭,在這 14 年裡面,.NET 日漸成熟並成為 Microsoft 的重要開發平台之一,只要是在 Windows 平台上的相關應用,幾乎都可以使用 .NET 以及所屬的 C# 及 VB 程式語言來開發,雖然它一直沒有真正的跨平台 (也可以說有,但只跨 Windows 生態圈的平台),不過 .NET 與 Visual Studio 的完美整合所產生的生產力,也是軟體產業無法否認的強大,Visual Studio 號稱地表最強開發工具是一點都不為過。

只是 .NET 的天生包袱終究使得它的可運用範圍一直被侷限於 Windows 生態圈,對另外一個生態圈 — Linux 與 Open Source 的生態圈而言,一直是微軟與 .NET 無法跨過的高牆。直到了微軟新任 CEO Satya Nadella 於 2013 年正式上任,並提出 Mobile First, Cloud First 的策略指導原則後,整個微軟幾乎動起來,試著想要推倒這一面高牆,而第一個產品就是 ASP.NET vNext,隨後又宣佈了 .NET Core 計畫,作為整體策略的第一步。

跨越鴻溝的努力

大家都知道 Microsoft Azure 是微軟重要的雲端運算產品線,Azure 的開放特性使得 Windows 平台與 Linux 平台的環境都可以建置在 Azure 平台,然而受限於 Windows 的生態圈,微軟總是在雲端技術的發展中落後,因為雲端技術的主流與先鋒都是由 Linux 的生態圈發起,這種例子不勝枚舉,像是 Docker 利用的是 Linux Container (LXC);Hadoop 是以 Java 開發並運行在 Linux 上;Apache Mesos 與 Spark 等管理與大數據分析平台也是在 Linux 上發展,相較之下,以 Windows 生態圈為主的微軟陣營總是在後頭追,移植受歡迎的軟體平台或套件到 Windows,因此上市時間總比其他陣營晚,這點在 Azure 與 Amazon AWS 的服務競爭中就可見端晲。所以即使 C# 語言的發展速度比 Java 快了幾個量級 (例如 C# 的 Lambda Expression 功能 Java 到 Java 8 才出現),但是發展卻不如 Java。

因此 2014 年開始,微軟終於跨出第一步,由 Satya Nadella 站上第一線向大家宣告 Microsoft Love Linux,自此開始,微軟許多的技術與應用開始排山倒海的往 Windows 以外的平台推進,應用面就屬 Office for iOS 與 Android 最廣為人知,微軟在 Windows 10 的發表會上也宣布數項計畫,讓 iOS 與 Android 的應用程式能直接跑在 Windows 10 平台等。開發工具的部份則是以 Visual Studio Code 作為先鋒,主力部隊將由 .NET Core 與其上的 Web 開發平台 ASP.NET Core 擔綱,以官方的角色將 .NET 推進到 Linux 與 Open Source 生態圈。即便是 Windows 平台上的 Visual Studio,微軟也納入了來自 Open Source 陣營的知名實作品,例如 bower、Gulp、Grunt、AngularJS 等,並加入了像 Docker Tools 這樣的工具,讓原本熟悉 Visual Studio 的開發人員能以最少的改變切入非 Windows 的環境。

但是,雖然微軟做了很多努力,開發人員還是有些本質上的差異需要習慣,這是因為 Windows 的生態圈重視的是 GUI (圖形化介面),但 Linux 生態圈大多數都是以 CLI (命令列介面) 為主,所以 .NET Core 與 ASP.NET Core 也將會著重在 CLI 上,只有在 Windows 上的 Visual Studio 還能保有多數的 GUI 介面,就連 Visual Studio Code 也偏重在 CLI。

.NET Core & ASP.NET Core

微軟最早啟動的跨平台的開發環境是 Project K,它是 ASP.NET Core 1 在專案初始時期的代號,在一開始的時候就提供了執行器 k.exe、版本管理工具 kvm.exe 以及套件封裝與管理工具 kpm.exe,當時就很明顯的要使用指令進行開發工作,它和原有的 .NET 執行環境也有很大的不同,它獨立於 .NET Framework 的執行期之外,稱為 KRE (K Runtime Environment),核心的載入器則稱為 KLR (K Language Runtime)。後來 Project K 被改名為 ASP.NET 5,其下的各個執行環境被改為 .NET 執行環境 (DotNet eXecution environment; DNX),此時作為跨平台核心的 .NET Core 也開始進行,其執行環境稱為 Core CLR,不論是 ASP.NET 5 或是 .NET Core 都是具有跨出 Windows 平台能力的執行環境,就連 Windows 10 的 Universal Windows Platform 的 .NET 平台使用的也是 Core CLR,搭配為 Windows 開發的 .NET Native 編譯器來強化執行效能。

1

(source: Immo Landwerth, .NET Core is Open Source)

.NET Core 是第一個由微軟官方所開發,具有跨出 Windows 平台能力的開發平台,作為下一代 .NET 開發的基石,同時它會和現有的 .NET Framework 並行,在 Windows 上可同時存有這兩種執行環境,而且 .NET Core 的程式可存取 .NET Framework 的類別庫以保有相容性 (當然跨出 Windows 後就不行了),.NET Core 本身的類別庫也重新設計,改為以套件散佈方式提供,也就是說,以 .NET Core 開發的應用程式不再需要傳統大包裝的 Framework Runtime,只需要執行前下載 Core CLR,並且在執行程式前先行還原套件,就可以執行,而且套件的版本與各應用程式可各自獨立,這可是一項重大的進步,以往或許寫個小程式還要帶大包 Framework 的景象未來將不再復見,同時套件化的管理也保有版本相容性,應用程式可視需要抓取所需的版本,而不用固定在一個大版。.NET Core 在不同的平台也可以編譯成原生碼,前面提到 Windows 是使用 .NET Native 編譯,Linux 與 Mac 則是使用 LLVM MSIL Compiler (LLILC) 進行編譯,.NET Core 的建造工具還可產生 C++ 程式碼,再使用 GCC 等編譯器編譯為原生碼。

至於 Web 端的開發平台,則非 ASP.NET 5 莫屬,但因為 ASP.NET 5 這個名稱很容易讓人誤會它是 ASP.NET 4.x 的升級版,但其實它是完全重寫的新版本,為了不讓外界誤解,微軟決定將它再改一次名字,即現在的名字 ASP.NET Core。它最大的特色就是揚棄了 System.Web.dll 這個 .NET Framework 最大的組件,當然少了 System.Web.dll 也等於宣告 Web Form 不會被移植到 ASP.NET Core,同時微軟也花了很多的心力將 System.Web.dll 內的類別進行重構與切割,分散到各個不同的組件,為 ASP.NET Core 的核心進行瘦身,以加快 ASP.NET Core 的執行效能。當然,ASP.NET Core 和 .NET Core 一樣,只需要取得或還原所相依的套件即可執行。而另一個重大的改變,是 ASP.NET Core 不再依賴 IIS,這也歸功於 System.Web.dll 的重構,ASP.NET Core 的執行環境由新開發的 Kestrel Server 負責,IIS 退回到 HTTP 的聆聽器的角色,微軟也特別為了這個需求開發了 IIS Platform Handler,以處理 HTTP 與執行環境之間的訊息轉送工作。ASP.NET Core 除了核心之外,它也帶來了 MVC 6 這個強悍的開發框架,以及其週邊的開發支援,如 ASP.NET Identity 3.0、SignalR 3.0 等新版本的開發框架。

取得開發環境

.NET Core 與 ASP.NET Core 在 RC1 的版本,其 CLI 命令列工具尚未合併,微軟已經計畫於 RC2 時將兩個環境的命令列合併,不過在此之前,還是要各自取得。.NET Core 可以取自其官方網站 http://dotnet.github.io/getting-started/,其工具只有一個:.NET CLI,執行檔名稱為 dotnet.exe,其下有相關參數可用,較常用的指令有:

功能 指令
在目錄下建立新專案 dotnet new
還原必要套件 dotnet restore (第一次執行時都要跑一次)
編譯專案 dotnet compile
執行專案 dotnet run
建置專案 dotnet builddotnet build –native (使用RyuJIT編譯)dotnet build –native -cpp (編譯並使用C++程式產生器)
封裝套件 dotnet pack
發行專案 dotnet publish

 

ASP.NET Core 的指令則是由 .NET 執行環境提供,分為幾個不同的指令:

  • exe: 執行 ASP.NET Core 程式。
  • exe: 管理 DNX 的版本,可安裝或指定要執行的 DNX Runtime 的版本。
  • exe: 還原 ASP.NET Core 所需的套件,以及建造程式與封裝部署等。

較常用的指令有:

功能 指令
安裝特定 DNX 版本 dnvm install
升級版本到最新版並設為預設 dnvm upgrade -r [clr|coreclr] -a [x86|x64]
將指定版本設為預設 dnvm use
列出可用 DNX 版本 dnvm list
升級 dnvm 工具 dnvm update-self
建置專案 dnu build
封裝專案為套件 dnu pack
還原套件 dnu restore
列舉相依套件 dnu list
發行專案 dnu publish
清除套件快取 dnu clear-http-cache
執行專案 dnx

 

ASP.NET Core 不像 .NET Core 有 .NET CLI 可初始化預設專案,若是用 Windows 開發,可使用 Visual Studio 產生專案,但若是使用 Mac 或是 Linux 開發時,則建議使用 Yeoman ASP.NET 5 Project Generator,它可以在目錄下建立新的專案範本,再使用 Visual Studio Code 或是其他文字編輯工具編輯程式碼,完成後使用命令列工具編譯執行即可。

認識 project.json

不論是 ASP.NET Core 5 還是 .NET Core,其專案資料夾內都會包含一個 project.json 檔案,它記錄了這個專案所需要的相關設定,包含使用的 .NET Core/DNX 版本、其相依的套件資訊、特定平台的相依資訊、啟動參數與指令、啟動事件等,下列內容即是預設 ASP.NET Core 1 的 Web 應用程式專案的 project.json:

其中最重要的部份是 dependencies 區段,它定義了專案所相依的套件與其版本,在 Visual Studio 編輯時,Visual Studio 會自動掃瞄 NuGet 取得相似的套件名稱與版本。

2   3  

若是使用 Visual Studio Code,也是一樣會出現提示:

4

當開發人員編修過 project.json 的 dependencies 時,Visual Studio 會主動呼叫 dnu restore 指令進行套件還原,此時就可以在 Visual Studio 的參考中看到套件的資訊。

5

由於 .NET Core 與 ASP.NET Core 可同時在 Windows 與非 Windows 的平台上執行,Windows 平台上是以 4.5.1 為基準,非 Windows 平台則是以 Core 5.0 為基準,若參考到了某一個平台不相容的套件,該套件上的圖示會出現驚嘆號,且編譯時會無法通過,若確定要鎖定在 Windows 上時,可將下方 frameworks 區段的 dnxcore50 移除,如此 dnu 就只會以 .NET 4.5.1 版本編譯。 6

frameworks 區段還有另一個好處,是可以將特定平台的組件參考加進來,編譯時 dnu 就會取用這些組件一起編譯。

7

commands 區段則定義了傳遞給 dnx 時的指令參數,不同的指令參數包含了要啟動的程式以及其必要參數。如下列,web 指令表示啟動 Microsoft.AspNet.Server.Kestrel (Kestrel Server),而 ef 表示啟動 EntityFramework.Commands 程式。

8

其他的 project.json 的區段,可參考 ASP.NET Core 團隊寫的 Project.json 結構參考:https://github.com/aspnet/Home/wiki/Project.json-file

前端資源管理

ASP.NET Core 的專案結構將後台資源與前台分開,前台的資源統一置於 wwwroot 資料夾下,應用程式若有什麼靜態的資源,可以放在這個資料夾內,部署時 dnu 會自動將這個資料夾內的資源配置到網站的根目錄下 (但若要讓 ASP.NET Core 應用程式能成功存取,還要加入 Microsoft.AspNet.StaticFiles 套件,稍後會提到)。

9

ASP.NET Core 也引入了前端套件管理服務 bower 與工作執行服務 Gulp/Grunt,在預設的 project.json 內就包含了發行前啟動前端套件程式的指令:

10

在 Visual Studio 裡面,針對 Gulp 與 Grunt 提供了工作執行器總管功能,可讓開發人員看到工作執行器執行的狀態;針對 bower.js 提供了相依套件管理,如同 NuGet 套件管理的操作模式,開發人員能輕鬆的管理前端的相依套件,預設的情況下, bower.js 下載的相依前端套件都會放在 wwwroot/lib 資料夾內。

11

後端功能管理

ASP.NET Core 的重大改變之一,就是開發人員必須使用程式碼來定義功能 (Feature),以往是在 Web.config 以及 IIS 上設定啟用或停用功能,在 ASP.NET Core 不再有 Web.config,也不再只能跑在 IIS 上,所以功能的啟用要由程式碼處理,只有程式碼啟用的功能才會啟用,沒有的就不會有作用,在 ASP.NET Core 專案範本內有個 Startup.cs,所有應用程式要啟用或停用的功能都要在這裡設定。以下的例子是預設專案範本的 Startup.cs 內容 (程式碼有修剪過)。

初次看到這段程式碼可能容易覺得適應不良,其實關鍵是在於 ASP.NET Core 採用來OWIN (Open Web Interface for .NET) 的架構設計,所有可掛於 ASP.NET Core 的功能組件都會實作一個對 IApplicationBuilder 介面的擴充方法,名稱基本上都是以 Use 開頭,像是要啟用靜態檔案讀取,就是使用 app.UseStaticFiles();,這個方法定義在 Microsoft.AspNet.StaticFiles 套件內,你必須要加入這個套件的參考,才可以在 Visual Studio 看到這個方法,其他像 app.UseIdentity();以及 app.UseMvc(); 都是類似的作法。只有用程式碼加入 (啟用) 的服務,才可以在程式中使用。

ASP.NET Core 本身也具備強大的 Dependency Injection 基礎建設,因此開發人員也可以在應用程式中的服務集合中加入自己的服務,例如:

同樣的,ASP.NET Core 的功能模組也擴充了 IServiceCollection 介面的功能,以簡化呼叫的語法與語意,例如 serivces.AddMvc(); 表示在服務中加入 MVC 的功能;services.AddIdentity(); 表示加入 ASP.NET Identity 的功能; services.AddEntityFramework(); 表示加入 Entity Framework 的功能等。

應用程式組態

Web.config 在 ASP.NET Core 中不再存在 (wwwroot 裡面的 Web.config 是為了要註冊 IIS Platform Handler),相關的應用程式設定都移到了 appsettings.json,同時也不再區分 appSettings 與 connectionStrings,例如:

組態檔也不是預設就能在程式中生效,一樣要使用程式碼將組態檔加入,才可以在程式中使用。Microsoft.Extensions.Configuration 定義了 ASP.NET Core 與 .NET Core的組態系統,並提供 JSON、INI、XML 等組態檔格式的支援。

總結

.NET Core 與 ASP.NET Core,這兩個主要的開發平台組成的 Core 家族,是微軟進軍非 Windows 生態圈的重要技術,它們都可以運行在 Linux 與 Mac,也可以包裝到 Docker 成為容器,.NET Core 讓 .NET 能被重新定義,而 ASP.NET Core 帶來許多改變,從正式脫離 System.Web.dll 開始,用程式碼定義功能、導入知名前端管理框架、不依賴 IIS 的環境等。.NET Core 與 ASP.NET Core 不但能適用於跨平台,也對運行在雲端環境與實作微服務 (Microservices) 有著相當大的潛能。

 

改變是需要習慣的,所以身為微軟陣營的開發人員,與其再繼續觀望,不妨就立刻開始習慣它吧,當你習慣了之後,你會發現在前面的道路是非常寬廣的。

 

banner

opencloudopencloud2

借力 Apache Cordova,網站工程師也能攻掠行動平台!

$
0
0

Apache Cordova 概述

Apache Cordova 是一個可以使用 HTML、CSS、JavaScript 打造 Hybrid Mobile App 的開發框架,由於不需要重新學習 Objectivc-C、Swift、Java、.NET 等原生 App 開發語言,因此對於前端開發人員快速轉戰 App 開發戰場來說,是個不錯的選擇。

Apache Cordova 在結構上是以 HTML+CSS 做為 App 頁面的處理,而 JavaScript 則主要負責 App 的邏輯層面,因此開發上可以使用前端的 JavaScript Framework 搭配 UI Framework,例如 BootStrap、Kendo UI、Ionic、WinJS UI、Onsen UI、AngularJS,而針對設備端原生功能則是透過 Cordova Plugins 的協助,呼叫 Plugins 所提供的 JavaScript API,因此像是使用地理位置定位、相機、通訊錄、媒體庫等原生功能也都可以做的到(圖1)。除此之外使用 Apache Cordova 開發 App 更可以是 write once run anywhere,開發團隊只需專注於一個專案就可以建置成不同平台的 App。

1

(圖1)

在開發工具方面,Visual Studio 2015 與 Apache Cordova 開源專案合作,推出 Visual Studio Tools for Apache Cordova,讓 Visual Studio 2015 直接支援 Cordova 跨平台 Hybrid Mobile App 專案,要提醒大家的是,如果您一開始安裝 Visual Studio 2015 時沒有勾選"HTML/JavaScript (Apache Cordova) "那麼您必須由 “控制台 -> 程式集 -> 程式和功能 -> 解除安裝或變更程式" 找到 Visual Studio 2015,選擇變更後再把「HTML/JavaScript(Apache Cordova)」勾選起來進行安裝(圖2)。

2

(圖2)
Apache Cordova Apps 專案範本位於 JavaScript 及 TypeScript 語言項目內(圖3),建立後可以看到整個專案結構與 Web 專案結構相似,www 資料夾是 Apps 主要目錄,預設結構按一般網站開發慣例,區分有 css、images、scripts 等資料夾,當然您可以依團隊規範自行規劃調整,而在專案根目錄下還有另外二個資料夾,merges 是用來加入各平台特定的程式碼檔案,而 res 則是各平台專屬的圖示和啟動顯示畫面等視覺資產,以及簽署憑證和平台專屬的組態檔(圖4),啟動頁面預設為 index.html 但可以透過 config.xml 來調整。

3

(圖3)

4
(圖4)

支援

JavaScript 做為開發 Apache Cordova Apps 所使用的程式語言,不論是自行撰寫 App 所需的邏輯或是呼叫 Cordova Plugins 所提供的 API,因此開發人員可以直接以最熟知的 JavaScript 語法進行撰寫 App。然而基於原型(Prototype based)的 JavaScript 語言在大型專案上較缺乏以類別(Class based)OOP 的開發設計概念,且語法上也較為鬆散,當頁面邏輯較為複雜時,就容易形成看起來雜亂無章的程式碼,往往導致後續維護及偵錯上的困難。

有鑑於此,Anders Hejlsberg ( C#之父 ) 在 2012 年推出 TypeScript 語言,透過 TypeScript 來減輕 JavaScript 開發人員的負擔,TypeScript 是完全相容 JavaScript 的,所以開發人員不用改變以往的撰寫習慣,可以直接在 TypeScript 裡撰寫一般的 JavaScript,或是混用 TypeScript 與 JavaScript,最後透過 TypeScript 編譯器產生的程式碼會是傳統的 JavaScript 程式碼。

TypeScript 主要在於透過一些 Class based OOP 的語法撰寫出較具維護性的 JavaScript 程式,而不是重新學習一套新的語言,因此 JavaScript 的開發人員可以很快速上手,舉例來說,在 TypeScript 裡定義類別,可以撰寫成如下程式碼(圖5),從語法上可以很清楚看到建構子、屬性等宣告,相信寫習慣C#等後端語言的開發者應該不陌生,接著編譯後則會轉為傳統的 JavaScript 程式碼(圖6)。另外使用 TypeScript 更可以享有 Visual Studio 開發工具的智能感知(Intellisense)、強型別檢查、前往實作(Go to Definition)等有助於開發上效率的智能輔助(圖7)。

5
(圖5)

6
(圖6)

7

(圖7)

Visual Studio Tools for Apache Cordova 除了支援傳統 JavaScript 專案類型之外,對於 TypeScript 專案類型當然也有支援,所以若是習慣使用 TypeScript 或是想要撰寫易於維護的 JavaScript 程式碼的開發人員,可以選擇直接在 TypeScript 語言項目裡建立 Apache Cordova Apps 專案(圖8)。

8

(圖8)

管理 Plugin 套件

Plugin 是 Apache Cordova Apps 用來實現與設備端原生功能產生互動的機制,例如想使用相機功能,那麼必須透 Camera Plugin 所提供的 JavaScript API 介面才能與設備端相機互動,而通常一個 Plugin 會是跨平台的,但不見得會支援所有平台。

Visual Studio Tools for Apache Cordova 裡提供了 Plugin 管理介面,透過視覺化的操作介面方便開發人員針對 Plugin 套件進行安裝、移除。要開啟 Plugin 管理介面相當簡單,只需要在 Apache Cordova Apps 專案目錄下的 config.xml 檔案點二下,然後選擇外套程式就可以開啟 Plugin 視覺化管理介面(圖9)。

9

(圖9)

Plugin 視覺化管理介面分成三個頁籤,第一個頁籤"核心"是針對目前常見的 Plugin 清單列表,並且同時支援 Windows、íOS、Android 三大平台的 Plugin,第二個頁籤"自訂"可以選擇由本機或是 Git 上面取得入 Plugin 套件(圖10),而最後一個頁籤"已安裝"則是
目前專案裡已有安裝的 Plugin 套件(圖11)。

10

(圖10)

11

(圖11)

建置與測試

開發階段 Visual Studio Tools for Apache Cordova 提供多種方式可以讓開發人員進行功能上的測試,首先 Apache Ripple 模擬器是個以 Chrome 為執行環境的 Web 應用程式,可以用來快速測試 App 的 UI 以及基本的核心功能,例如地理位置(Geolocation)等(圖12),開啟速度最快可以在開發初期或是產品 POC 階段提供相當大的協助。

12

(圖12)
在進入開發中後期階段,開發人員可能需要較準確的來實際測試功能及使用者操作介面與情境,因此接下來可以透過虛擬模擬器的方式來進行測試,在 Android 平台 Visual Studio 2015 提供二種類型的模擬器,一個是 Google Android 模擬器(圖13),另一個則是 VS 模擬器(圖14),VS 模擬器是基於 Hyper-V 技術執行的 Android 模擬器,其優點在於啟動速度相較於 Google Android 模擬器快上許多。而 Windows 平台則依不同類型(Windows Phone、UWP、Windows ARM、Windows x64、Windows x32)有不同的模擬器可以選擇(圖15),另外除了使用模擬器之外,也可以將手機或平台設備接上,然後直接由 Visual Studio 2015 進行實體裝置的測試。而執行過程中 Visual Studio 2015 也提供如 Web 應用程式般的 Dom 總管視窗可以讓開發人員進行 UI 的調整,並且可以即時反應在模擬器上(圖16)。

13

(圖13)

14

(圖14)

15
(圖15)

16

(圖16)

iOS 平台 Remote Build

相較於 Android 與 Windows 平台,iOS 平台的 App 受限於環境因素必須在 Mac 作業系統下執行,因此 Visual Studio 2015 除了支援前述的 Apache Ripple 模擬器可以模擬測試 iOS App 之外,也另外針對 iOS App 提供 Remote Build 功能。Remote Build 可以讓開發人員直接透過 Visual Studio 2015將 App 建置於遠端 Mac 機器,並且呼叫 Mac 上的模擬器來執行 App,所以開發人員可以一方面維持在 Visual Studio 2015 開發工具上撰寫 App 程式碼,一方面利用 Remote Build 來測試執行 App。

要使用 Remote Build 功能,首先必須在 Mac 機器上安裝 Node.js,然後安裝 Xcode command-line tools(指令:xcode-select –install),以及安裝遠端建置工具 remotebuild agent(指令:sudo npm install -g remotebuild),安裝完成後於命令列下執行 remotebuild start 來啟動建置伺服器 remotebuild agent,並產生憑證以及安全 PIN 碼開始監聽外部呼叫(圖17)。

17

(圖17)

而回到 Visual Studio 2015 的部份必須設定 remote agent 相關資訊(工具/選項/Apache Cordova工具/iOS Configuration),例如主機位置、安全性 PIN 碼、連接埠等,要注意的是安全性 PIN 碼是有時效性的,一旦過期則必須在 Mac 主機上重新以 remotebuild certificates generate 重新再建立一組,若不考量安全性問題時,則可以使用無須驗證的方式來啟用 remotebuild,指令為 remotebuild –secure false,在無須驗證模式下 Visual Studio 2015 的 remote agent 就可以不須要輸入安全性 PIN 碼(圖18)。

18

(圖18)

設定完成後,在 Visual Studio 2015 裡選擇使用模擬器的方式進行建置與測試(圖19),過程中二台機器會同步顯相關建置及監聽訊息資訊(圖20),如果建置過程沒有問題的話,就可以將 Cordova 專案透過 Mac 機器建置成 iOS 應用程式,並且開啟模擬器執行 App 來進行偵錯及模擬測試(圖21)。

19
(圖19)

20

(圖20)

19

(圖21)

結語

Visual Studio Tools for Apache Cordova 是 Visual Studio 2015 整合 Apache Cordova 開發 Hybrid App 的解決方案,不僅提供傳統的 JavaScript 同時也支援 TypeScript,讓開發人員在面對大型的 App 專案也能撰寫具有易維護性及高品質的程式代碼與架構,並且在 Plugin 管理上提供了視覺化介面,簡化開發人員維護 XML 設定檔的程序。而在測試上提供了 Apache Ripple 、Google Android 、Visual Studio Emulator for Android 等多種模擬器之外,針對 iOS 平台也提供 remotebuild 功能,讓 iOS App 也能有一方面使用 Visual Studio 開發,一方面也可以有模擬器可以測試的一致性開發體驗,總結來說 Visual Studio Tools for Apache Cordova 提供一個相當完整的 Apache Cordova App 開發與測試環境,對於撰寫 Hybrid App 的團隊來說可以使用熟悉的開發工具,是個相當不錯的選擇。

參考更多相關文章:

1. Visual Studio Apache Cordova Apps 單元測試首部曲

2. Visual Studio Code 上也能開發 Apache Cordova 應用程式了!

【Xamarin 小工具】Gorilla Player –開發 Xamarin.Forms 的同時,及時預覽 XAML 畫面

$
0
0

【轉載自昕力大學

1. 前言

  • 近日在 Visual / Xamarin Studio 當中開發 Forms 程式時,常常因為編輯 XAML 沒有辦法看到預覽畫面,深覺有開發上麻煩的地方。後來發現 Gorilla Player 這個第三方套件,可以協助解決這個問題。

2. 環境準備

  • Windows 8/8.1/10
  • Mac OS 10.11
  • Visual Studio 2015 or Xamarin Studio
  • Gorilla Player

3. 本文

3.1 Gorilla Player 的介紹

Gorilla Player 是個非 Xamarin 官方的第三方組織 UXDrivers,協助 Xamarin.From 處理 XAML 編輯的一個及時預覽工具。其工具可以到下列網址,填寫 Email 後取得下載: http://gorillaplayer.com/

1

3.2 安裝與設定 Gorilla Player

下載 Gorilla Player 後,點選安裝。

2

靜待安裝。

3

安裝完成。

4

此時會同時啟動設定 Gorilla Player 的設定程式。請點選接受。

5

Gorilla Player 會偵測已經有安裝的相關開發工具,將適當的 Plugin 安裝好。

6

安裝完畢,再點選繼續。

7

接著請填寫 Gorilla Player 當初註冊時發送的帳號與密碼資訊。

8

此時會啟動 Gorilla Player 的背景服務程式,它會透過網路的方式跟我們執行的 Visual Studio / Xamarin Studio 做 XAML 編輯的通訊,以便你可以看到 XAML 的即時預覽。

9

相關如何使用 Gorilla Player 的說明。

10 11 12

接著打開 Visual Studio / Xamarin Studio。(下面以 Visual Studio 為例)

13

可以到工具 -> 選項 -> Xamarin 當中,確認一下 Gorilla Player 的設定值。

14

啟動 Visual Studio 後,建立一個 Xamarin.Froms 的專案,預設 Gorilla Player 就會自動執行,可以在 Windows 的常駐程式當中找到。並且在右鍵選單當中,點選  ”Show Player + SDK + Samples Location”

15

檔案總管瀏覽到該資料夾後,點選 Player 資料夾。

16

並且利用 Visual Studio 開啟資料夾內部的 Player 專案,來部署手機端的 Gorilla Player 軟體。

17

開啟後,直接編譯佈署該 Player 程式到 Android 的模擬器當中。

18

3.3 使用 Gorilla Player 預覽 XAML

接下來在原本建立的 Xamarin.Forms 專案當中, 增加個新的 XAML Page。19

此時在變更 XAML 的過程當中,Gorilla 就會將所編輯的 XAML 呈現相關的畫面預覽狀況 (Ctrl + S 就會更新畫面),呈現在剛剛執行起來的模擬器中。

202122

4. 參考來源

 

Visual Studio 上開發 Python?你/妳不可不知道的六大功能!

$
0
0

Visual Studio 2013/2015 搭配 Python Tools for Visual Studio 擴充套件讓 Visual Studio 能提供對 Python 程式語言高度整合的開發環境,並完整發揮 Visual Studio 強大的功能,協助您在 Visual Studio 內開發 Python 程式上如虎添翼,提升開發效率!以下將說明六項 Visual Studio 整合開發 Python 程式之優勢功能。

  • 整合 Python 直譯器 (Interpreter) & 互動視窗 (Interactive)
  • 整合 Python 虛擬開發環境 (Virtual Environment)
  • 整合 Python 套件管理員 (Package Manager)
  • IntelliSense 對 Python 完整的支援
  • 對 Python 使用偵錯模式 (Debugging)
  • 跨平台遠端偵錯 (Remote Debugging)

整合 Python直譯器 (Interpreter) & 互動視窗 (Interactive)

Visual Studio 高度整合 Python 直譯器,讓您能夠在開發過程中切換不同版本的Python 直譯器。此項功能除了能夠切換至您所熟悉的 Python 版本進行開發外,更可確保您的程式在不同 Python 版本下運行的函式相容性是合法的,如下圖程式碼當中的 print 函式,在 Python 2.7環境下為合法的 (紅色箭頭指向目前為使用 Python 2.7 全域環境直譯器)。

1

若您的系統有安裝不同版本的直譯器,將會替您整合至 Visual Studio 當中供您選擇。如您安裝直譯器的路徑非預設路徑或欲自訂直譯器函示庫、直譯器位元時,您亦可自行於 Visual Studio 新增自訂直譯器。

接著我們示範切換至不同版本的 Python 環境,這裡以切換至 Python 3.5 為例。

2

此時會發現 Visual Studio 自動偵測到非該環境版本所支援的函式,透過下引號提示使用者錯誤的程式碼片段,提供使用者快速尋找出不同版本間不相容之處,以便快速進行修正工作。

3

並提供於 Visual Studio 內啟動不同版本的互動 (Interactive) 視窗,就像以往在 Python 命令列下做的事情一樣,此互動視窗提供您進行初步撰寫、測試,以及驗證您設計想法的一個簡易執行環境。

4

整合 Python 虛擬開發環境 (Virtual Environment)

Visual Studio 提供完整的 Python 虛擬環境來為不同專案提供獨立的 Python 執行環境,如此一來可避免多個專案間彼此共用一個全域環境使得有太多與該專案不相關的套件在環境中,增加開發環境的複雜度。或者您能夠在不同環境中安裝不同版本的套件,以便測試在不同的版本中所使用到套件的函式是否有不一樣之處。

如下圖,我們創建多個虛擬環境,用此來安裝不同版本的套件以進行相容性測試,而創建出來的虛擬環境能於稍後提供給其他專案使用,減少安裝及創建環境所花費冗餘的設定時間。

5

在創建虛擬環境時能夠透過其他虛擬環境或者全域環境內已安裝的套件產生 requirements 檔,此檔案將可在稍後創建新的虛擬環境時作為參考,提供快速設置新的虛擬環境所需的套件清單。

6

整合 Python 套件管理員 (Package Manager)

在 Python 中有許多有用的第三方套件能夠透過 pip 或者 easy_install 套件管理員安裝,讓您能在程式碼中呼叫這些套件中的函式,協助您更快的達成開發目標。而在 Visual Studio 中高度整合這些套件管理員,讓您不需要輸入繁瑣的指令即可簡單的安裝套件。

如下圖,可於方案總管內在欲安裝套件的 Python 環境下點擊滑鼠右鍵,即可看到安裝 Python 套件的選項。

7

接著如下圖輸入您要安裝的套件名稱,在這裡您也可以指定版本安裝,或者不指定則安裝最新版本的套件。另外需要注意的是若您使用 easy_install 選項,將不會替您即將安裝的套件整合至方案總管當中,如此一來將無法使用 Visual Studio 完整管理這些透過 easy_install 安裝的套件。

8

IntelliSense 對 Python 完整的支援

Visual Studio 針對 Python 亦提供以往在 C#、VB、VC++ 等語言上 IntelliSense 的支援,例如:列出物件成員、函式呼叫參數與返回值資訊、快速諮詢和自動完成文字等輔助功能,讓您在撰寫物件或者呼叫函式時能夠更有信心,提高撰寫效率。

下圖展示 IntelliSense 功能協助列出物件中所公開的成員內容。

9

下圖展示 IntelliSense 功能提供函式呼叫參數資訊。

10

另外 IntelliSense 提供快速動作,例如鍵入 main 後按下「T,即可幫您自動補完合適的程式碼區段與相關參考。

11

對 Python 使用偵錯模式 (Debugging)

Visual Studio 針對 Python 支援完整偵錯功能,例如在程式執行時能夠暫止於中斷點處,此時能檢視或修改當下執行情況的區域變數以及呼叫堆疊,並能於偵錯模式下使用您熟悉的重要功能讓您能更簡易快速的掌握程式執行的情況。

12

另外,Visual Studio 對 Python 支援了混合偵錯模式 (Mixed-Mode debugging),若您的 Python 程式碼中有使用到外部如 C/C++ 等 Native Code 並擁有該 Native Code 的原始碼專案時便能進行混合偵錯模式。而與一般偵錯模式一樣,在 Python 外的語言仍可進入中斷點改變其變數值。

相同的,您也能夠於混合偵錯模式下自由的跳躍至不同程式碼的呼叫堆疊當中進行程式碼及變數的巡覽。

13

版本控制

Visual Studio 整合版本控制,其支援 Git 與 Visual Studio Team Services 版本控制,透過 Visual Studio 您現在不需要額外工具就能夠直接於 Visual Studio 內對您的 Python 專案直接進行版本提交、復原、比較、檢視程式碼歷史紀錄等版本控制所用到的常用功能。

14 15

跨平台遠端偵錯 (Remote Debugging)

Visual Studio 替 Python 程式加入了遠端除錯的能力,透過這個 Python 套件讓您能夠使用 Visual Studio 連接在不同的作業系統上 (如 Linux) 執行的 Python 程式。此項功能使得您在跨平台開發時更能夠獲得一致的開發體驗與提升整體開發效率!

如下圖展示 Python 程式運作在一塊 Linux 嵌入式開發板上,同時在個人電腦內的 Windows 10 運行著 Visual Studio 2015,其透過 ptvsd 套件能讓您遠端附加至序,直接對 Linux 嵌入式開發板上運行的 Python 程式進行如您所熟悉的偵錯模式。並保有完整的偵錯模式功能像是區域變數檢視、呼叫堆疊分析等完整偵錯功能來進行程式的分析與追蹤。

16

17

 

參考資料:

PTVS影片教學課程

開放原始碼 – GitHub/Microsoft/PTVS

 

Azure 研測實驗室開放全球正式服務!再也不怕忘記關掉 VM 了~

$
0
0

今天,我們很高興地宣布 Azure  研測實驗室已經開放全球正式服務囉!在 Azure 中的自助服務沙盒環境你可以快速創建開發/測試環境,同時最小化資源的浪費與管理成本。

我們已經搜集到許多客戶在開發/測試環境中面臨的各種問題。借力雲端計算的力量,一些問題已經開始得到解決,如硬體維護成本。但在另一方面,還存在著一些許多客戶每天都必須面對的問題,尤其是:

  • 在傳統環境需求模式之下,對於開發/測試人員交付環境所造成的延遲
  • 耗時的環境設定建置
  • 生產環境中真實的問題
  • 為了最佳化資源使用所造成的雲端資源管理上的高成本。

azuredevtestlab1

這就是為什麼我們建立了 Azure 研測實驗室,這是一個能讓你得到快速、方便、簡潔,並且符合您的團隊需求的開發/測試環境。Azure研測實驗室主要透過四個方面改善了當今開發/測試環境的問題:

  • 快速達到『準備好進行測試』的狀態

通過三種不同的方式來靈活地定義虛擬機器的基礎以加速環境建置:分別是Azure市集上的映像、自訂映像(您擁有的 VHD)和公式(具有預先設定的設定,例如 VM 映像檔 + VM 大小 + 虛擬網路設定等)。在研測實驗室中可重複使用的構件讓使用者可以視需要指定在建立 VM 時所執行的「動作」,例如執行VM的擴充程式、安裝軟體、部署應用程式。

  • 零煩惱的自助服務

實驗室的策略和在實驗室中Azure以角色為基礎的存取控制(RBAC)模型能給予開發人員和測試人員一個沙盒環境,使他們可以自己建立自己的環境,避免意外收到天價的帳單。

  • 一次建立,隨處可用

在實驗室中部署實驗室與資源,ARM模板都是完全支援的。可以從現有的虛擬機建立可重複使用的自訂映像檔與公式,從 VSTS Git 或 GitHub 中讀取的構件也可以在不同實驗室被使用。

  • 與現有的工具鏈整合

除了 API 和命令行工具,Azure DevTest Labs Tasks 可在 Visual Studio 市集中取得,提供您在 Visual Studio Team Services 中的發行管線更好的支持。有三個功能讓您分別可以創建一個實驗室 VM 去運行測試、將 VM 最新的更動保存為黃金映像檔,以及在完成測試後刪除不再需要使用的 VM。

azuredevtestlab2.jpg

 

 

你可以透過這個3分鐘的影片 – “What is Azure DevTest Labs” 得到更深入的瞭解!或是閱讀Azure DevTest Labs 團隊的部落格官方公告來瞭解詳情。

今天就來試用吧,讓我們知道您的想法!如果您有任何想提供的建議,歡迎在 Azure DevTest Labs feedback forum 提交您的想法。

有使用上的問題嗎?到 MSDN Community forum 尋找答案或發問新的問題。

想獲得最新發行服務的資訊或我們對研測實驗室的想法,請關注 Azure DevTest Labs Team Blog 或訂閱我們的 Service Updates

 

快開始體驗吧~

【學習更多】

Azure 研測實驗室技術文件

本文翻譯自 Announcing General Availability of Azure DevTest Labs


使用 Xamarin.Android Templates Pack 達成基本的 Material Design 介面設計

$
0
0

【轉載自昕力大學

1. 前言

常常會遇到有人在 Xamarin.Android 開發時,有需要使用 Material Design 的介面設計來建立 App,但需要花費不少時間建立基本的樣式,在本篇文章的介紹後,將能夠快速的建立有基礎 Material Design 的介面範本的 App。

2. 環境準備

  • Windows 8/8.1/10
  • Visual Studio 2015

3. 本文

3.1 什麼是 Material Design 的介面?

在 Google 發表 Android L 的時候,也推出了 Material Design 的設計介面,以提供 App 的介面設計有更加統一的質感介面設計。如要了解更多關於 Material Design 的介紹可參考 GitBook 上的 ”Google Material Design 正體中文版” 的相關簡介。 參考連結

3.2 在 Xamarin Android 當中使用 Material Design 的專案範本

平常在安裝好 Visual Studio 的 Xamarin 套件之後,建立一個 Xamarin.Android 的專案範本時只有以下這些範本可以選擇。

1

接著我們在 Visual Studio 的 Extension 網站上下載由 James Montemagno 所建立的 ”Xamarin.Android Templates Pack” 擴充套件。下載後將它安裝起來完成後,就會在 Visual Studio 的 Xamarin.Android 專案範本當中看到如下圖畫面。

2

這個 Xamarin.Android Templates Pack 擴充套件提供了兩個新的 Android 專案範本,Android Blank App AppCompat 以及 Android Navigation Drawer App AppCompat。

3

接著我們就點選其中的 Android Blank App AppCompat 的這個專案範本看看有什麼吧。

4

新增好這個專案範本後,我們看到這個專案,比起原本的空白專案的東西更多增加了不少東西。在參考當中,多引用了 Xamarin.Android.Support.v4、Xamarin.Android.Support.v7.AppCompat 這兩個元件。在 Activity 的部分,撰寫了一個抽象的 BaseActivity 類別去繼承 AppCompatActivity,並且讓其他在專案當中實際用到的兩個 Activity (MinaActivity、SecondActivity) 來實作這個 BaseActivity。

5

3.3. Material Design 的專案範本測試

不囉嗦,直接開始偵錯執行吧!!!

6

該專案的執行結果如下畫面。

7

在 MainActivity 當中可以點選 ”Click To Navigate” 的按鈕,點選後會導覽至 SecondActivity 這個畫面,而在該畫面上方會有一個返回鍵可以點選回到前一個畫面 (也就是 MainActivity)。

4. 參考來源

4.1 參考影片

Xamarin Evolve 任何人都能製作 Material Design 的漂亮 Andriod App!

【開發必看】Top 10 點閱破千熱門課程!

$
0
0
各位開發夥伴們大家好,感謝各位長久以來對我們的支持,這邊替大家整理了本年度最熱門的精彩課程,快來看看你看過哪些呢?小編掛保證!通通都是點閱率破千的必修課程啦!欲知更多課程請到 免費線上課程 學習!

1. 晉升高生產力 JavaScript 開發者必備神器

此單元由微軟技術傳教士 Eric ShangKuan 以及微軟技術社群行銷經理 Jennifer Chiu 搭配。提出開發者在寫程式
時會遇到的一些小問題,這次特別針對使用 JavaScript 的夥伴們提供必備神器供大家使用,不論您今天的身分
是企業、學生、個人,通通可以使用 Visual Studio 2015 來晉升您的生產力!
相關文章:Visual Studio Update 1 ,為 Android 專案加入 Java 支援與除錯功能

2. 簡介 Windows 10 通用 Windows 平台 (UWP)

今天介紹的是 Windows10 上面 Universal Platform 提供給 Windows App 開發人員一個全新的平台,讓開發
者可以在這平台上開發給所有 Windows 10 裝置的 App,此課程從 Windows 的整合開始說明帶您一路瞭解
Windows10 開發神秘面紗!
想看更多相關影片,請點 UWP (Universal Windows Platform) 開發攻略
相關文章:

3. 何謂現代化網站

隨著近年使用者操作裝置已經由桌上型電腦、筆記型電腦逐漸轉變為手機、平板類型,隨者不同裝置的螢幕
尺寸不同,響應式網頁也越來越火紅,本課程舉出業界現代化網站案例,提供您實用小技巧,讓您的網站變身成
為現代化網站!
想看更多相關影片,請點 現代化網站設計

4. Visual Studio Code 簡介

Visual Studio Code 是微軟最新推出,同時能在 Windows、Mac、以及 Linux 上執行的強大程式碼
編輯器,它支援多種程式語言的語法高亮度、語法建議(IntelliSense)、整合 Git 版本控制、並且
(目前)對於 ASP.NET (C#) 及 Node.js 的專案開發、執行及除錯功能進行優化。本課程為您簡介
Visual Studio Code 以及基本的操作與編寫程式碼的體驗。
想看更多相關影片,請點 活用 Visual Studio Code
相關文章:

5. 現代網頁設計趨勢觀察

熱血 CSS 可樂站長講師從視覺與互動設計與大家分享現代網頁設計的觀察趨勢,在工具、方法與技術越來越多樣
的趨勢之下,2016 到底何種網頁最夯?包含以下內容:扁平化設計當道 / 卡片式設計 / 極簡版面 / 動畫呈現,與
大家分享寫網頁應該要持續的學習新技術或是基礎技術練到滿等?怎麼判斷網頁技術值不值得公司導入學習?
RWD 與 APP 相較差異又該如何區分?
想看更多相關影片,請點 現代化網站技術分享日

6. Visual Studio 的躍遷

微軟企業成功分享如何將敏捷計劃帶入公司當中,從軟體開發的緣由直到團隊之間的合作改變,與客戶的交流進步,
達到團隊最終的效益!Visual Studio 開啟了敏捷技術,每 2-3 年更新發布讓客戶找到企業新價值,顧客的回饋讓微軟
創造更多軟體工具
想看更多相關影片,請點 企業敏捷實踐系列

7. 打造新世紀物聯網舞台

您知道為何物聯網的話題日趨火紅嗎?要開始建置物聯網需要哪些準備?有了 Microsoft Azure 物聯網服務,您
就可以監控資產來提升效率、提高營運效能來推動創新,以及利用進階資料分析,以便透過新的商業模式和
收入來源讓您的公司轉型。您可從現有的事物著手建立物聯網。
想看更多相關影片,請點 搶佔【物聯網】革命先機
相關文章:從車聯網範例學習使用 Azure 雲平台實現物聯網(IoT)精神

8. 七分鐘概覽 R Tools for Visual Studio

R 語言是近來相當熱門的統計和資料分析語言,常見到使用 R Studio 來當作 R 語言的 IDE 工具,現在
經由安裝 R Tools for Visual Studio(RTVS),提供使用 R 語言的使用者新工具 Visual Studio 的好選擇,以
下將為各位介紹:R Tools 主要釋出功能 / 前置作業的準備 / R 編輯器、R 互動視窗 / R Plot /
Variable Explorer / R 歷史紀錄 / R Help / R Markdown / R Tools Option
相關文章:在 Visual Studio 中使用 R 語言進行進階資料分析 – 使用 R Tools for Visual Studio

9. VSTS 新功能-數位儀錶板

2015/11 月底,微軟在 Connect();大會,正式公布了大幅度改版的線上 TFS,也就是變了新名字的 VSTS
(Visual Studio Team Services,從前叫 VSO)。更新後的 VSTS,除了原本的版控、自動化建置、測試,以及工作
項目管理之外,加上了眾人期待已久的數位儀表板功能!這個討喜的功能,讓團隊以及PM/PO可以一目了然的
看到整個專案的整體狀況,當然,這個儀表板是可以客製化的,有各式各樣的組件,可供專案管理人員選擇應用,
您也可以為專案建立多組儀表板,分門別類的以視覺化方式來呈現所有資訊。
想看更多相關影片,VSTS 與敏捷開發 ALM 實戰關鍵報告
相關文章:Visual Studio Team Services (VSTS) 測試工具藍圖

10.現代化網站設計-ModernWeb JavaScript

你瞭解 JavaScript 嗎?從偵測瀏海器支援度到如何優化行動裝置!
此單元教您如何精進 JavaScript 讓網站更加現代化!
想看更多相關影片,請看 現代化網站設計

感謝各位的收看!若有任何問題歡迎至 MSDN 論壇 參與討論,或者到微軟社群之星學院問問題,就有機會月月抽好禮!長知識又拿好康!

把 ASP.NET Core 應用程式裝進 Docker 裡 –使用 Docker Tools for Visual Studio 2015

$
0
0

ASP.NET Core 1 (早期稱 ASP.NET 5) 是完全以跨平台與彈性開發為核心理念的 Web 開發平台,它能運行於 Mac 與 Linux 伺服器,同時也參考了其他開發平台的作法如 node.js 或 Python,將 Hosting 的引擎另外開發為 Kestrel Server,IIS 也不再是 ASP.NET Core 1 唯一的座騎。既然 ASP.NET Core 1 己經能跑在非微軟平台,那麼勢必也可以跑在容器環境內。

容器環境與 Docker 簡介

容器環境 (Container) 是這兩年來很熱的一門技術,它的正式名稱是作業系統層虛擬化 (OS-level Virtualization),屬於虛擬化技術的一支,它的原理是在作業系統核心內切割出使用者層級的環境,並且在每個使用者層級的環境內提供相同的 API。

這樣的作法看起來似乎和全虛擬化 (Full Virtualization) 很像,但全虛擬化採用的是作業系統使用者層級之上的行程,例如 Oracle 的 VirtualBox、Mac 上用的 Parallel Desktop、VMware Workstation 等都是跑在作業系統之上的使用者層級內的虛擬化軟體,用這種方式建立的虛擬機器,只要在別的作業系統上安裝相同的虛擬化軟體,虛擬機器就可以搬移過去。作業系統層虛擬化則是在作業系統核心內對使用者層級環境進行切割,作法是源自早期 Linux 上的 chroot 技術,只要能確保應用程式可以執行在該作業系統,就可以自由的把其上的應用程式移轉到別的電腦。

1 2

(source: https://www.docker.com/what-docker)

想想看,若是在一個電腦作業系統環境幾乎都相同的大型雲端環境,只要利用作業系統層虛擬化技術,所有的電腦都可以跑任何的應用程式,無形中會比伺服器級虛擬化 (Server Virtualization) 的強度更高,部署上只要作業系統具有作業系統層虛擬化能力,就不再需要像 Hypervisor 或是其他虛擬化軟體,只要由作業系統原生支援就足夠了。應用程式的開發人員只要有一個方法能將應用程式需要的軟體元件或框架等組織起來,再使用作業系統層虛擬化將軟體執行起來,由於作業系統層虛擬化的特性,每個使用者的環境都是獨立的,也就是說,各自的執行環境就如同一台又一台的虛擬機器一樣。

作業系統層虛擬化的實作,目前較廣為人知的是 Linux Container (LXC),它成功實作了在 Linux 作業系統內的虛擬化,但它本身只有 API 以核心引擎,在製作容器上需要較多的知識與實作經驗,因此就有其他團隊為 LXC 開發更簡易的管理套件,現在最火紅的容器管理軟體 — Docker —就是這樣的一個管理套件。Docker 將 LXC 容器技術再進一步封裝,讓建置容器變得更簡單,部署起來也更簡單,加上作業系統層虛擬化特性,讓一個應用程式能在數秒鐘之內執行起來,這在現今鼓吹 DevOps 流程的軟體產業來說相當重要 (因為可以放在任何一個作業環境上跑),也讓雲端供應商看到了比伺服器虛擬化更大的利基點,因此 Amazon 和 Microsoft Azure 都各自宣布大力支援以 Docker 為主的容器環境,Container 技術加上 DevOps 流程能讓應用程式的生命週期更迭再加快,而且運行速度也不會輸給伺服器級虛擬化的環境。

3

(source: Scott Hanselman, Publishing an ASP.NET 5 app to Docker on Linux with Visual Studio)

然而作業系統層虛擬化有個很大的缺點,就是它基於作業系統的核心進行使用者層級的虛擬化,因此只要作業系統核心不同,其上的應用程式就無法成功部署與執行,這對非 Linux 的作業系統是個很大的問題,因此像 Solaris 就開發了 Solaris Container;FreeBSD 開發了 FreeBSD jail 技術來支援作業系統層虛擬化。微軟雖然晚了一些,但現在正在開發的 Windows Server Container 以及 Hyper-V Container 技術也即將隨著 Windows Server 2016 的推出而正式亮相,藉時 Windows 上也可以使用容器技術了。

4

(source: Mike Neil, Microsoft Unveils New Container Technologies for the Next Generation Cloud)

程式化基礎建設

容器技術讓開發人員能使用相同的 API 群製作環境,以執行應用程式,這樣的特性使得開發人員能以程式碼的觀點來看待基礎建設,在一個大型雲端環境內,假設所有的機器上的作業環境 (不是作業系統) 完全相同,例如全部都是 Linux 作業系統且都支援 LXC 技術,那麼開發人員就不需要再關心其下的網路基礎建設,只要雲端環境本身能正常運作,開發人員就可以用程式碼去定義整個應用程式的環境。這樣的架構稱為程式化基礎建設 (Infrastructure as Code),只要使用程式碼或組態檔的作法就能定義應用程式所需的執行環境。當基礎建設能程式化,表示就能融進版控系統內,開發人員也不需要去深入了解基礎建設的架構與運作,只要使用組態檔來定義即可,團隊間也可以以相同的語言來溝通,這正是 DevOps 所強調的重點。

Docker 的容器介面抽象化,對於跨作業系統的容器管理而言就相當重要,這表示即使是不同的容器 (LXC/Windows Container) 也都能使用相同的 Docker API,減少因為作業系統容器技術不相容而造成的問題,對於具有多種作業環境的 Microsoft Azure 而言,Docker 的抽象化 API 幫助很大,所以 Microsoft Azure 在 Docker 上的投入也很大,Azure Container Service 是以 Docker 為主,並加上 Apache Mesos 的管理機制,結合容器技術與上層分散式系統管理能力,強化 Microsoft Azure 平台上的 DevOps 與容器應用能力。

使用容器技術所架構出的應用程式元件,又可以稱為微服務 (Microservice),表示輕巧又快速的軟體元件,它可以獨立存在又可以相依與其他的微服務,同時也能依需要自主擴展,在容器技術的支援下,幾乎能達到無極限的擴展力。Microsoft Azure 的下一代雲端服務 Service Fabric 就是基於微服務架構所提供的新雲端服務平台,開發人員可利用微服務的概念來開發與部署應用程式與服務。

將 ASP.NET 應用程式製成容器

前面花了這麼多篇幅介紹容器技術與其應用,相信會讓你有一股想試試看的衝動,現在我就拉回主題:Docker 與 ASP.NET,ASP.NET Core 1 既然可以執行在 Linux 上,也就表示我可以將它製作成容器,讓它可以執行在 Linux-based 的 Docker 環境內。當然,微軟的傳統就是使用 Visual Studio 就能做完一切,所以 Visual Studio 提供了 Docker Extension,在擴充功能與更新功能中搜尋 docker,就能找到這個工具。

5

這是一個要另外安裝的工具,所以下載並安裝後,打開 Visual Studio 再打開 ASP.NET Core 1 的專案 (若是 ASP.NET 4.x 則不行),然後呼叫發行視窗,可看到多了一個 Docker Container 的選項。

6

選擇 Docker Container 後,會出現選擇 Azure 上的 Docker VM 的對話盒。

7

按下 New 可新增新的 Docker Container VM,包含 Windows (Server Container Preview) 以及 Linux 的 VM,我選擇 Ubuntu Server 15.10,為了確定它確實可部署並執行在非 Windows 的平台。

8

額外佈建虛擬機器需要些時間,並可以在 Visual Studio 的輸出視窗看到進度。部署完成後再次啟動發行工具,可看到 Docker 部署的設定己經自動產生。

9

此時按下發行,Visual Studio 就會自動開始部署 ASP.NET Core 1 應用程式到遠端的 Docker Container VM 內,一樣在 Visual Studio 的輸出視窗能看到相應的動作。

10

在部署完成時,會開啟瀏覽器視窗,你可以看到 ASP.NET Core 1 應用程式己經能在 Docker Container 上執行了。

11

使用 Docker Client 指令可以進一步的確認它已經成功執行了。

12

Docker 是使用組態檔 Dockerfile 作為初始與啟動虛擬環境的基礎,Visual Studio Tools for Docker 會自動在專案內產生一個 Dockerfile 檔案,裡面是必要的 Docker 初始化的指令,包含要使用哪個 Docker Image (Docker 容器內的應用程式執行環境)、應用程式的來源、工作目錄以及要啟動的參數等,Docker 會依照它的定義來建立容器並啟動程式。

FROM microsoft/aspnet:1.0.0-rc1-final

ADD . /app

WORKDIR /app/approot

ENTRYPOINT [“./web"]

總結

本文將最近火紅的容器技術以及 Docker 做了簡單的介紹,並示範使用 Visual Studio Tools for Docker 部署 ASP.NET Core 1 應用程式到 Docker Container VM 內,以展示 Docker Container 部署與啟動的完整步驟。若你想要更深入研究 Docker 的作法,可搜尋網路上的 Docker 資源,未來 Microsoft Azure 會在 Docker 上有更多的支援,再加上 Service Fabric,雲端軟體開發的未來藍圖將會以容器技術與微服務為核心,此時不學,更待何時?

學習更多:

將 ASP.NET 容器部署到遠端 Docker 主機

使用 Docker VM 擴充功能來部署您的環境

佈建及管理大量 Container – Azure Container Service (ACS)

ASP.NET Core Preview Docker Image

透過 VS Team Services 達成持續部署與交付 –以 Jenkins 為例

$
0
0

Release Management(VS Team Services)自動化您的部署,讓您可以輕鬆的交付您的應用程式/服務並且時常交付。您可以在 VS Team Services 上設置持續整合(CI)與持續交付(CD)的所有過程。然而,如果您已經在 Jenkins 上設定您的 CI Pipeline,VS Team Services 擁有很好的整合特點,透過 API 可以讓您從任何第三方服務串聯至 VSTS 的發佈服務,此文即以 Jenkins 做說明。

這篇文章假設您已經設置了持續整合 CI,每次程式碼簽入/提交即建置您的專案。看完這篇文章之後,您應該能夠在 Release Management(VSTS) 中自動化觸發發佈,透過 Jenkins 插件的幫助:Visual Studio Team Services 持續部署

按照以下步驟,使用 Jenkins 與 Release Management 來為您的應用程式設置持續部署:

  1. 設定已封存為成品的 Jenkins 專案
  2. 在 VS Team Services 上設定 Release Definition
  •  為 Jenkins 創建 Service Endpoint
  • 連結 Jenkins 建置(build)專案作為成品來源
  • 設定部署步驟
  1. 從 Jenkins 自動觸發 release

步驟0:必備條件

我們假設您已經有以下可以使用的項目:

  1. 能正常運作的 Jenkins 安裝
  2. 用以建置您的應用程式的 Jenkins 專案
  3. 一個 VS Team Services 帳號 

步驟1:建置已封存成品的 Jenkins 專案

您需要有一個 Jenkins 專案,設定了所有您建置專案所需的動作與步驟。一旦你可以建置這個應用程式,你需要發佈可以被釋出/部署的成品(包含組成這個應用程式/服務的所有檔案)。這些可以透過這簡單的步驟達成,例如:在 Post Build Actions 部分中的 Archive the artifacts。

 

jenkins-archive-500x105

 

一旦你能封存這些成品,你就可以創建一個新的建置,並檢查這些封存的成品是否有在你的建置細節中顯示為 Build Artifacts

 

jenkins-build-500x226

此外,您需要使用 Jenkins 設置 CI,每個程式碼簽入/提交時可以自動觸發。這個 CI 的設定是獨立於您所使用的程式碼儲存庫系統。

步驟2:在 VS Team Services 上建置 release 定義

現在,您可以用 Jenkins 產生或封存的成品來創建新的建置,而下一步就是要能夠用 VS Team Services – Release Management 部署這些成品。您可以參考以下 YouTube 影片,教您如何設定可部署 Jenkins 成品的 Release Definition,或者按照影片下方提到的步驟進行。

 

2.1 為 Jenkins 建立 Service Endpoint

為了取得 Jenkins 產生的建置成品,Release Management(VS Team Services)必須要能夠連結到它。因此您需要創建一個 Service endpoint 連接到您的 Jenkins 服務。

到 VS Team Services 中的專案設定(project settings):

 

vsts-project-settings

 

在服務標籤下(services tab),選擇新的 Jenkins service endpoint。


jenkins-endpoint-select-500x327

 

如以下範例所示,輸入所需的欄位以創建終端:

 

jenkins-endpoint-500x315

 

如果您的 Jenkins 服務是在地端且無法讓 VS Team Services 取得,請您不必擔心。只要以正確的 URL 與驗證資訊創建一個  endpoint,並確保 release 在運作時 release agents 看的到 Jenkins 服務。請參閱本文了解有關 agent 如何看到成品的資訊。

2.2 連結 Jenkins 建置專案作為成品來源

建立一個新的 Release definition。如果你正在使用 guided experience 請點選那個+號…

 

rd-create-1

 

在成品選擇的頁面,選擇 Jenkins 作為成品來源並且在 Service(Manage)的下拉選單中選擇您想要部署的 Jenkins endpoint(步驟1創建的)建置成品。

 

rd-create-3

 

若您不慎選錯或是遺漏了選項,您可以隨時從 Release Definition 編輯頁面中的 [成品(Artifacts)] 連接您的成品。

 

rd-create-4

rd-link-artifact

2.3 建立部署步驟

這個步驟取決於您想部署之應用程式的類型以及您想部署在哪裡,根據不同的應用類型和部署方法,您可以選擇您需要的步驟/任務在您的 Release Definition 中。根據您的需要,您還可以針對 Release Definition 定義多個環境。上述提供的影片有提到一些關於這部分的細節,來此瞭解更多有關建立 Release Definition 的資訊。

試著觸發一個新的 Release 吧! 現在這個 Jenkins 成品可以依據您提供的部署步驟被部署了。請參閱下一個步驟以建立持續部署,當有新的建置被創立,這些 release 能在 Jenkins 上自動被觸發。

步驟3:從Jenkins自動觸發release

為了建立持續部署,我們將透過插件使 release 能夠從 Jenkins 自動觸發:Visual Studio Team Services持續部署

這個插件利用 VS Team Services REST APIs 讓您能夠在 Jenkins 建置完成後於 VSTS 或 TFS 上觸發 release。該插件有一個建置後步驟 – 「VS Team Services 持續部署」,請依循以下步驟:

3.0 安裝「VS Team Services 持續部署」插件

如同安裝其他插件,到 [Manage Jenkins] -> [Manage plugins],搜尋「VS Team Services Continuous Deployment」插件名稱並安裝。 

使用插件

假設您已經在 VS Team Services – Release Management上創立了 Release Definition 並且連結到 Jenkins 作為成品來源,當您創立建置時,您需要在Jenkins那邊按照以下步驟來自動觸發release。

3.1 新增 Post build action

到 [Job Configuration] 中新增 [post build action] – VS Team Services Continuous Deployment

 

addPostBuildAction

3.2 填入所需欄位

填入所需細節對於這個 post build action 您將會需要以下細節:

Collection URL:  例如 https://fabfiber.visualstudio.com/DefaultCollection <-請注意您會需要這個專案 Collection URL

Team project: 您已完成 Release Definition 的 VS Team Services 專案。

Release definition: 連接此Jenkins作為成品來源的 Release Definition 的名稱。

現在,您需要輸入代表您的驗證資訊,使 Jenkins 觸發最後建構完成的 release, 如果您是使用 VS Team Services,您只需要輸入 PAT。若您是使用 TFS,您需要輸入使用者名稱密碼

 

fillFieldsForPostBuildAction

3.3 完成!在 action 中查看 CD 吧!

現在,您已經自動化您的部署觸發器,進而能夠實現持續部署,當有簽入/提交時,即會觸發建置和 release。趕快在 Jenkins 上手動觸發建置或者透過程式碼簽入/提交啟動 Jenkins 建置,最後即可在 VS Team Services 中觸發 Release。

常見問答:

1.如果我有很多個成品連到我的 Release Definition,該插件還是能觸發 Release 嗎?

A:不能,現階段您只能連結一個成品來源到 Release Definition,插件才有辦法運作。但這個方案很快就會改善。

 

本文翻譯自 Continuous deployment/delivery with Jenkins and VS Team Services

使用 App Service 進行多個 URL 的效能測試

$
0
0

自從宣布了網頁與行動應用程式的效能測試公開預覽版以及透過 App Service 持續部署進行效能測試的功能,最備受期待的功能就是複數 URL 測試。

我們持續地與 Visual Studio 負載測試團隊合作,並很高興地宣布這個功能現在已經上市了。請在 Visual Studio team blog 瞭解更多相關資訊。

多個 URL 測試讓您在執行效能測試時,能夠更貼近使用者瀏覽應用程式的行為模式。多個 URL 測試會依序 ping 一系列的 URLs ,而非反覆的 ping 同一個 URL 。這種測試可以模擬一個用戶從您的網站主頁,到搜索結果列表,然後再到網站的目錄。

建立一個 多個 URL 測試

您需要做的第一件事是定義將在測試執行過程中被測試的 URL 列表。更詳細的說明可以在交付前測試您的應用程式中找到。

一旦完成您的 .webTest 檔案,您將需要編寫效能測試。您可以在 Azure portal 上應用程式中的(1) Tools 選單之下找到(2)Performance Test。

 

mutiurl-1

 

一旦在效能測試介面中,您可以點選(1) New 來編寫一個新的測試和(2)Configure test using 選擇單一或是多個 URL 。

 

mutiurl-2

 

在這裏您可以(1)上傳您的 .webTest 檔案以及(2)檢視被測試的 URL 列表。

 

mutiurl-3

 

請在下方留言區讓我們知道您的想法及問題,或使用我們的 UserVoice 回饋論壇。

想知道微軟開發工具還能支援那些測試嗎? 點此詳見更多好工具!

 

本文翻譯自 Multi URL performance test with App Service

行動應用開發平台寶典 (一) 跨平台行動前端技術

$
0
0

【2016/6/16 號外】雲優先、行動優先 – 微軟在 Gartner 魔力象限的行動應用程式開發平台 (MADP) 成為領導者! 詳情請見 連結


 

微軟行動應用開發願景

建立適應性強、企業等級的行動 App 策略橫跨您的開發、IT 運行以及生產管理

Capture

 

前言

行動裝置可謂人類史上最快速的科技爆炸,不僅是 80年代 PC 爆炸成長的 10 倍速度,更是近年社交網路的 3 倍速度成長。根據 Gartner 預估,2016 年底前會有 82% 的行動電話是智慧型手機,比起 2015 年成長了 12 %。現今,人手不只一隻智慧型手機更有一台平板,身為開發人員您準備好挑戰市場浪潮了嗎?

Capture

雖然您可以針對不同平台各自開發原生的行動 App,例如建置 iOS App 使用 Objective-C/Swift 、Android App 使用 Java 以創造很棒的使用者體驗,但面對多個平台,開發維護成本是非常可觀的,更別說需要成立多個團隊各自為營的人力與溝通成本。

3

為了協助控制以及降低成本,跨平台的技術已漸漸成為顯學。您知道嗎? 預估到 2017 年會有 40% 的行動開發是採用跨平台技術 的。

此篇為 行動應用開發平台寶典 系列文 (一),為您列舉現在微軟支援的幾種熱門的跨平台行動應用開發前端技術

 

混合式 App 使用 HTNL/JavaScript 技術

如果您是熟悉 HTML 和 JavaScript 的 Web 開發人員,則可使用 Visual Studio Tools for Apache Cordova 以 Windows、Android 和 iOS 裝置為目標。這些應用程式可以全部三個平台為目標,且您可以使用最熟悉的技巧和程序來建置它們。

那麼 Cordova 是什麼? 簡單地說,它是一個架構。該架構包含外掛程式的模型。此外掛程式模型提供單一的 JavaScript API,您可以用來存取所有三個平台 (iOS、Android 和 Windows) 的原生裝置功能。

因為這些 API 是跨平台的,您可以在所有三個平台之間共用您撰寫的大部分內容。這會降低開發與維護的成本。另外,也不需要從頭開始。如果您已建立其他類型的 Web 應用程式,可以與 Cordova 應用程式共用那些檔案,而不需要以任何方式修改或重新設計。

1. Visual Studio Tools for Apache Cordova (TACO)

– MSDN 技術手冊: 開始使用 Visual Studio Tools for Apache Cordova

– TACO 官網:  http://taco.visualstudio.com 

– 部落格介紹文章: 借力 Apache Cordova,網站工程師也能攻掠行動平台!

2. Visual Studio Code + Cordova extension

– 部落格介紹文章: Visual Studio Code 上也能開發 Apache Cordova 應用程式了!

原生 App 跨平台技術

1. 使用 C#、.NET 和 Xamarin 

Xamarin 是行動應用程式開發平台,可從通用 C#/.NET 程式碼基底建置原生 iOS、Android 和 Windows 應用程式,以在平台之間重複使用 75% 到將近 100% 的程式碼。使用 Xamarin 和 C# 撰寫的應用程式可完整存取基礎平台 API,並且能夠建置原生使用者介面,再編譯為機器碼,因此不會對執行階段效能造成太大的影響。

更棒的是,熟悉 C#、.NET 和 Visual Studio 的開發人員在使用 Xamarin 開發行動應用程式時,不需要了解 Objective-C 或 Java 等機器碼語言,也能享有相同的功能和產能,包括在 Android、iOS 和 Windows 裝置上進行遠端偵錯。因此,許多具有美觀使用者介面的高效能應用程式 (例如 NASCAR、Aviva 和 MixRadio) 意料之中都是使用 Xamarin 所建置。

4

– MSDN 技術手冊: Xamarin 的行動應用程式開發

– 影片教學: YouTube 影片 & Channel 9 影片

Xamarin 開發人員中心

2. 使用 Visual Studio C++ 建立共用程式庫與元件

您可以使用 Visual Studio,針對傳統型 Windows 應用程式、通用 Windows 應用程式、iOS 和 Android 平台,來建置標準 C++ 程式碼的共用程式庫。您只需使用 Visual C++ 以及整合在 Visual Studio 中的協力廠商工具,就可以建置適用於 Windows 和 Android 平台的原生應用程式。如果您有 Mac 電腦,便可使用 Visual Studio 針對建立與部署在您 Mac 上的 iOS 應用程式建立及偵錯 C++ 程式碼。

使用 C++ 為 Android、iOS 和 Windows 建置

– MSDN 技術手冊: 使用 Visual C++ 建置跨平台應用程式

您可以使用 Visual C++ for Cross-Platform Mobile Development 來建立、建置、執行和偵錯使用 C++ 的完整 Android 應用程式。Visual Studio 包含可協助您開始使用的 Android Native Activity 專案範本。

建立 Native Activity 專案

– MSDN 技術手冊: 建立 Android Native Activity 應用程式

– 官網: Visual C++ 跨平台行動開發

3. 使用 Visual Studio Tools for Unity 建立手機遊戲

Unity是建立跨平台遊戲的遊戲引擎和開發環境。Unity 引擎可在 21 個平台上執行,涵蓋範圍從高效能電腦,到遊戲主機、觸控式平板電腦和行動平台、網站甚至 console。Unity 編輯器提供容易使用的介面,可建置出豐富的遊戲世界。Unity 的功能、使用容易和涵蓋範圍,使其成為現今遊戲開發人員之間的熱門選擇。

Unity 編輯器適合用來組合您的遊戲世界,但無法在該編輯器中撰寫程式碼。您可運用 Visual Studio Tools for Unity,使用熟悉的 Visual Studio 程式碼編輯、偵錯與提升生產力的功能,用 C# 為 Unity 專案建立編輯器與遊戲指令碼,也可以使用 Visual Studio 的強大偵錯功能,對這些指令碼進行偵錯。

不僅如此,Visual Studio Tools for Unity 還與 Unity 編輯器緊密整合,因此您可以花較少時間來回切換執行簡單工作,它也提供 Unity 特有的提升產能功能,並將 Unity 文件放在您可以隨時取得的位置。

Capture

– MSDN 技術手冊: Visual Studio Tools for Unity

– 官網: 使用 Visual Studio 組建 Unity 遊戲

4. 使用 PowerApps 建立客製化企業重要的內部應用程式 (LoB) – Preview

這項服務的一個主要用例是允許商業用戶在一個基於表單的用戶介面上,通過拖放控制項和數據源的方式開發應用。而專業開發者一樣可以參與這些應用的開發過程,他們可以在 Azure API App 平台上開發相應的 API,並讓 PowerApps 應用進行調用。一但您和其他使用者分享這個 App,他們可以選擇運行在網頁瀏覽器或者任何裝置(PC、平板或手機) 或者使用 PowerApps for iOS & Android。因此您只需建立一次 App,便可在任何裝置平台上呈現。

powerapp

– PowerApps 入門手冊: 開始使用 PowerApps

PowerApps 官網

 

參考資源:

Visual Studio 中的跨平台開發

Visual Studio 官網

下一章節

– 行動應用開發平台寶典 (二) 行動後端服務 (敬請期待)

 


Capture

若對以上技術及產品有任何問題,很樂意為您服務! 請洽:台灣微軟開發工具服務窗口 – MSDNTW@microsoft.com / 02-3725-3888 #4922

精選影片 -【請珍惜愛用 Visual Studio 的宅宅】

$
0
0

6471.YqTqq

MSDN Blog 小編將嘗試全新課程組合,搶先主打【請珍惜愛用 Visual Studio 的宅宅】
身為開發人員的你,怎麼能錯過這次的 Visual Studio 課程錦囊呢?
使用 MAC 的朋友我們提供免費的 Visual Studio Code 讓您體驗,使用 Windows 的朋友請免費下載 Visual Studio Community 版本,快來搶鮮體驗地表最強開發工具!

Visual Studio Code

Visual Studio 2015

支援多種語言開發


 

1. Visual Studio Code 簡介

Visual Studio Code 是微軟最新推出,同時能在 Windows、Mac、以及 Linux 上執行的強大程式碼編輯器,它支援多種程式語言的語法高亮度、語法建議(IntelliSense)、整合 Git 版本控制、並且(目前)對於 ASP.NET (C#) 及 Node.js 的專案開發、執行及除錯功能進行優化。不論您是否是用 Windows 或 .NET 相關開發,Visual Studio Code 都是為程式設計師量身打造,一個相當優秀的編輯器,強烈推薦您試試!本系列包含 5 部精采課程,想學習更多請點擊 活用 Visual Studio Code

 

2. Visual Studio Code 跨平台應用

Visual Studio Code 是一套使用 Electron 以及 node.js 開發的程式編輯器,特色為輕量、簡單、易於操作使用。語法涵蓋 JavaScript、C#、C++、PHP、Java、HTML、R、CSS、SQL、Markdown、TypeScript、LESS、SASS、JSON、XML 和 Python,及許多通用檔案格式。支援智能感測 ( IntelliSense),自動偵測程式碼的問題並進一步除錯。目前 Visual Studio Code 支援 Mac、Linux、以及 Windows ,並且已在 GitHub 上釋出原始碼,本課程的內容將說明基本操作外以及如何透過 Visual Studio Code 進行 Git 版控的操作、程式碼編譯與除錯功能。

本系列包含 7 部精采課程,想學習更多請點擊 mini Connect(); // 2016

 

3. Visual Studio 2015 新功能介紹

由台灣微軟技術傳教士上官林傑帶您一覽 VS2015 最新功能, 此課程您可以看到

  • IDE 的功能強化
  • 應用程式開發工具
  • 偵錯及診斷工具
  • Visual Studio Code 及其它工具

 

4. 初探 Visual Studio 2015 Update 1 全貌

2015/11 月迎來第一次的 Update 1 更新,本次【初探 Visual Studio 2015 Update 1 全貌】課程內容裡,將會帶大家一覽在完成 Update 1 更新後,Visual Studio 2015 開發工具對於 Apache Cordova 跨平台開發與 Windows 通用應用程式(UWP)、C# interactive 與 Go To Implementation 開發協助、NuGet與Bower 套件管理以及 Cloud Explorer 與 Application insights 雲端服務等面向功能的提升,在實質上提供對開發人員有幫助的改變。

本系列包含 7 部精采課程,想學習更多請點擊 mini Connect(); // 2016

5. C# 6.0 的新功能

C# 6 加入了許多實用的小型語言功能,能夠移除未定案的項目並清除您的程式碼。本影片會快速地導覽所有新的語言建構。

本系列包含多部精采課程,想學習更多請點擊 Visual Studio TV

 

6. .NET 2015 的新功能

加入 Habib Haydarian 一同探討 .NET 2015,學習有關以下 .NET Universe 的各種不同之處最新的功能: .NET Framework 4.6、.NET Core、ASP.NET 5、Roslyn 等等。

本系列包含多部精采課程,想學習更多請點擊 Visual Studio TV

 

7. ASP.NET 5 & .NET Core 開發攻略

.NET Core 是微軟的新一代應用程式開發平台,它重新定義了.NET,除了包括它能夠跨平台 (Windows, Linux, Mac OSX) 之外,以往在部署 .NET Framework 時總是要部署一大包的執行期環境,在 .NET Core 裡,這個問題將不復存在,.NET Core 將所屬類別庫的組件 DLL 封裝成 NuGet 套件,並且利用.NET CLI (Command Line Interface) 介面工具進行管理,應用程式在部署時只需要還原所屬的套件即可,將套件輕量化也能讓應用程式運行在雲端環境與容器環境 (如 Docker) 時獲得更快的執行效能。ASP.NET Core 1.0 (原名為 ASP.NET 5) 是運行在 .NET Core 上的 Web 應用程式開發平台,不但擁有 .NET Core 的能力,還引入了前端套件管理工具 (bower, Gulp, Grunt 等),同時也修改了 Hosting 的機制,讓 ASP.NET Core 1.0 的應用程式如同 node.js 與其他知名 Web 應用程式框架一樣是隔離行程的環境。"Core Family" (.NET Core+ASP.NET Core) 將重新定義微軟的開發技術,並讓微軟的技術正式跨出 Windows 平台,未來的發展無可限量。

本系列包含 7 部精采課程,想學習更多請點擊 mini Connect(); // 2016


MSDN 論壇精選 ( 4/24 – 6/15 )

$
0
0

MSDN

MSDN 論壇  是一個可以讓開發人員自由提出問題、尋找資訊的好地方,歡迎大家多多利用,與社群中的同好們一同分享 Microsoft 技術資訊。

而我們會不定期整理論壇精選給大家,希望對您的學習有所幫助!以下為 2016 04/24 – 2016 06/15  的論壇精選,大家在閱讀時有疑問也可以直接加入論壇中討論喔。

想與科技菁英交流嗎?透過 Community Hero,你可以與其他人分享你的成就,同時擴大你的相關機會!活動期間為 2016年 5 月 9 日到 2016 年 8 月 9 日,經驗值前 100 名的 Community Hero,將受邀參加 Community Hero 大會暨餐會喔!機會難得,趕快註冊屬於你的 Hero 時代吧!

日期 主題
04/24  Visual Basic 如何自定義型別
04/26  C# EXCEL 匯入 SQL 相關問題 
04/27  Asp.Net Identity 如何實作代理機制
04/28  執行 DataGridView 出現:「錯誤的 IL 格式」訊息
05/03  C# 如何設定能讓 try-finally 的 finally 區塊代碼正常執行
05/04  Visual Studio 中的實體資料模型兩個表格無法連結
05/04  C# 如何把 Json 字串轉成 SQL update case 語法
05/09  由 Visual 2015產生的安裝專案無法在 Windows Server 2003 R2 上安裝
05/10  Excel 讀取出來的資料能否以 Data Table 存取
05/11  C# 如何把 EXCEL 值放入陣列中
05/18  關於在 C# 2010 中遞迴函數的次數上限
05/27  Visual Studio 如何不被加入 Git 原始檔控制
06/02  Server 2012 R2 IIS 架站及 ASP 的問題
06/09  Visual Basic 如何把物件的座標記憶起來
06/14  C# 同時讀寫在 txtflie 至 chart 顯示曲線問題

.NET Framework 相容性簡介

$
0
0

前言

從 .NET 框架 4.0 開始,所有主版本號為 4(稱為 “4.x” 版本)的 .NET 框架,都會進行就地更新。這就意味著在一段時間內,電腦上安裝的只有一個 .NET 4.x 框架。安裝 .NET 4.5 框架將替換 .NET 4.0 框架,.NET 4.5.1 框架將替換 .NET 4.5 框架,.NET 4.6 框架將替換 .NET 4.5.1,以此類推。

由於這些就地更新的特點,原本在 .NET 4.0 框架上運行的應用程式,在電腦安裝的 .NET 框架升級後,可能需要在 .NET 4.6 上運行。.NET 4.x 框架之間的相容性是非常高的,因此在 .NET 4.x 框架下正常工作的應用程式,通常也會在較新版本的 .NET 框架下正常運行。然而不同的 .NET 4.x 框架會有一些變化,因此應用程式應該在其將運行的任何版本的 .NET 框架上測試下。

本文概述了最佳做法和工具,用來使支持新的 .NET 版本更容易。

 

發生了哪些變化?為什麼?

對於 .NET 團隊來說,和之前版本的 .NET 框架的相容性,是一個高優先順序的工作。事實上,.NET 框架所有的更改都是由經驗豐富的工程師進行審核,他們會對這些改變在客戶的應用程式上的影響進行評估。

儘管如此,仍然存在相容性問題。原因之一是,在更新 .NET 框架時,相容性並不是唯一的優先事項。有時,由於功能性的原因,不得不進行更改,來解決某個安全性漏洞,或者是支持某個行業標準。

還有一些偶然發生的相容性問題。.NET 框架團隊會進行全面的相容性測試,以防止這些問題,但仍然會漏掉一些問題。還有更複雜的情況,修復相容性問題本身就是一種影響相容性的改變(因為有些用戶可能依賴於這些無意的新行為)。在這樣的情況下(解決無意的行為更改),.NET 框架團隊常常會使用一個稱為 “Quirking” 的解決方案。

 

Quirking 和目標 .NET 框架

Quirking 指的是對於緩解相容性問題,在 .NET 框架中有兩個單獨的程式碼路徑,並且選擇一種作為應用程式的目標 .NET 框架版本的路徑。這種方式緩解了許多 .NET 框架相容性的問題,因為應用程式在較新的 .NET 框架上運行時,只要在沒有變化的目標 .NET 框架中運行,就避免了很多潛在的問題。Quirking 行為是被應用程式的目標 .NET 框架自動確定,但可以由開發人員使用應用程式或電腦配置設置來進行重寫。雖然減輕了很多相容性的問題,但是由於安全方面的考慮,以及技術上的限制,並不是所有的相容性問題都可以被 Quirking 行為解決。

舉一個例子,如果一個目標 .NET 框架是 4.5 的應用程式,在安裝了 .NET 4.5.2 的電腦上運行,即使在較新的框架上執行應用程式,為了減少相容性問題,它也會模擬 .NET 4.5 的行為。

目前, 微軟對 .NET 4.0,4.5 和 4.5.1 已 停止支援但是需要特別注意的是根據新 .NET 框架的支援政策, 以那些低版本為目標 .NET 框架的應用程式在高版本的 .NET 框架上的正常運行,將會繼續得到支援。

目標版本是在創建應用程式定義域(通常是在託管可執行檔啟動時)時,由應用程式的主程序集的目標框架屬性決定的。此屬性可以通過以下方式設置︰

Quirking 設置是應用程式定義域範圍。在大多數情況下,類庫(dll 的)將根據依賴於它們的可執行檔,而使用或者不使用 Quirking。正因為如此,即使沒有 Quirking 應用,創建者的共用庫可能需要確保他們的程式碼能夠正常工作。

 

相容性開關

除了基於 .NET 目標框架的自動急轉之外,開發人員可以通過設置相容性開關,明確選擇使用或者不使用影響相容性的變化,手動啟用或禁用個別相容性急轉(以及其他一些不是自動急轉的行為)。這些“相容性開關”對於允許開發人員把較新版本的 .NET 框架作為目標 .NET 框架(為了使用 .NET 的新功能)時非常有用,這樣仍然可以選擇不使用一些已知的會影響應用程式的改動。相容性開關設置方式有以下幾種:

  • 通過設定檔設置
  • 通過環境變數設置
  • 在專案的原始程式碼中以程式設計方式設置

如何設置相容性開關的詳細資訊,雖然沒有在這篇文章中提到,但在後續會有關於這方面更多深入的細節。

在 MSDN 上關於相容性問題的文件中,經常會提到相容性開關,需要時可以查閱。

 

相容性問題文件

所有已知的 .NET 框架相容性問題都記錄在 MSDN 上。

從 .NET 框架 4.5.1 開始,相容性問題被列為“運行時更改” 或 “重定向更改”。

  • 運行時更改,指的是影響任意應用程式在較新的 .NET 框架版本(這些變化不是 Quirking)上運行的更改。
  • 重定向更改,指的是只影響應用程式重新以較新 .NET 框架為目標框架生成的更改。這些是 .NET 框架變化,或者是編譯工具的變化。對於 .NET 4.0 和 .NET 4.5 之間的變化,在相容性問題表的專案裡,運行時和重定向的區別並不顯示,但可以通過閱讀說明來進行區分。

除了 MSDN 上面的文件,.NET 框架相容性問題都可以作為標記文件 ,是可供使用的相容性工具(見下文)。可以通過直接讀取參考文件 (或在列表的 MSDN 中), 來瞭解有關相容性的問題。這個參考檔是開源 GitHub 存儲庫中的一部分,可以提交請求,或者創建任何需要修正的問題。.NET 團隊會將參考檔上面的資訊和 MSDN 上的資訊進行同步。

 

編譯器的相容性問題

除了上文提到的 .NET 框架運行時和重定向的相容性問題之外,在不能進行急轉的 C# 和 VB 編輯器版本之間,還有一小部分不會發生在運行時的更改問題。例如,由於 C# 4.0 編譯器和 5.0 C# 編譯器 在生成中間語言時的極小差異,開發人員在新的編輯器中重新編譯應用程式的時候,必須留意此類問題。

因為這些相容性問題僅在新的編譯器中重新編譯時才會顯現,所以它們不會影響到以前編譯過的二進位檔案在新版本的 .NET 框架上運行。為此,MSDN 文件中將這些問題歸類為重定向的變化。相容性問題標記文件會將編譯器相容性問題標記為“編譯時”的重定向的更改問題,這種問題和 “Quirking “ 重定目標更改有一些差異。

 

問題識別工具

在 GitHub 上發佈相容性問題標記檔的主要目的,是為了相容性工具的使用。這些工具使得從一個 .NET 框架版本到另一個的遷移變得比較容易。現在,我們介紹以下兩個相容性分析工具集。

API 移植性分析器

ApiPort(該工具的簡稱),它能夠掃描二進位檔案,並標識應用程式介面(以下簡稱 API)使用的所有 .NET 框架。然後,它將這些 API 和相容性問題參考文件中存儲的資料進行比較,並針對所使用的 API 提供一份報告,是關於一個 .NET 框架 4.x 和另一個版本之間的 API 的一些更改。命令列選項可以縮小掃描範圍 (例如,只考慮指定的 .NET 框架版本之間的更改)。完整文件請參閱 ApiPort 中斷更改掃描使用說明。使用 ApiPort 工具時,需要牢記的注意事項有以下兩點:

  1. 因為 ApiPort 只關注 API 調用的 .NET,因此它有可能會發一些誤報。大多數 .NET 相容性問題只影響某個 API 的特定程式碼路徑。簡單地使用這些 API,並不意味著應用程式就會受到相容性問題的影響。詳讀更改說明,以確定所報告的問題是否有可能在你的特定應用程式中出現。
  2. 因為 ApiPort 只關注 API 調用的 .NET,一些相容性問題無法通過此工檢測出來。例如,當只掃描中間語言時,在 WPF 應用程式中使用已更改的 XAML 控制項可能不會被發現。 ApiPort 是一個很有用的工具,但不能替代相容性測試的。

.NET 框架相容性分析器

.NET 框架相容性分析器是一整套 Roslyn 診斷程式碼分析器,其使用原始程式碼中的語法樹以及語義模型,從而更智慧地決定一個專案是否會遇到相容性問題。他們仍然會存在誤報,但相比 ApiPort 工具會準確很多。

這些工具可以透過在 NuGet.org 網頁上搜尋 Microsoft.DotNet.FrameworkCompatibilityDiagnostics 得到。.NET 框架團隊目前正在對這些分析器開放原始碼。想要獲得更多的在開放原始程式碼成果的更新,請關注這個網頁。

 

報告新的相容性問題

當把應用程式從一個 .NET 框架版本遷移到另一個的時候,你偶爾可能會遇到在 MSDN 或 ApiPort 參考文件中沒有記錄的相容性問題。如果這種情況發生,請讓我們知道!.NET 團隊將會不斷地保持相容性文件是最新的。

在 .NET 框架中,沒有文件說明的相容性問題可以用以下方式報告:

  • 使用 Visual Studio 裡面的 ”發送笑臉” 回饋功能來發送詳細的變更。
  • 在 ApiPort 存儲庫中創建問題來題記錄那些還沒有被記錄在工具的標記文件中的 .NET 框架相容性問題。.NET 的團隊(或社群成員)將會調查並適當的添加文件和支援。

 

結語

.NET 框架力求與每個新的框架版本高度相容。儘管如此,一些相容性問題仍然是不可避免的。瞭解這些變化,並且知道怎樣去緩解這些問題,可以保持你的應用程式在新版本的 .NET 框架上成功運行。

本文提及的一些相容性最佳做法包括:

  • 不是必須的情況,不要重定向為較新版本的 .NET 框架來作為目標框架。因為這樣應用程式可以利用相容性 ”Quirking” 功能,從而使相容性問題減少到最低限度。
  • 如果你在用來運行你的應用程式的 .NET 框架版本上有任何的控制項,就使用較新版本的 .NET 框架。這是因為 .NET4.x 上面的許多相容性問題已經在後續版本中得到了修復。例如,在 4.0 至 4.6 之間的相容性問題就比 4.0 到 4.5 之間的相容性問題少。
  • 如果應用程式是使用較新的編譯器重新編譯的,就一定要確保進行徹底的測試。這可以找出編譯器相容性問題 (雖然這些問題很少見)。
  • 使用相容性工具找出潛在問題,常用的工具有 API 移植性分析器 和 .NET 框架相容性分析器
  • 在你期望運行的所有 .NET 框架版本上,測試你的應用程式。

使用這些技術,應用程式將會繼續在新版本的.NET 框架中運行。

 

相關資料

本篇翻譯自 Introduction to .NET Framework Compatibility

移植 .NET Core 計畫,整合各平台變得更簡單了!

$
0
0

【2016/6/27 號外】.NET Core 1.0 ! 正式釋出 –> 詳情請見 連結


在前篇文章中我提到了如何移植 .NET Core,並邀請使用者們不吝嗇的回報您的使用經驗和改進意見。

這項措施帶動起了非常多使用者之間的討論。

根據這些討論的重點和我們與第一與第三方夥伴合作的經驗,我們決定把核心 API 跟其他 .NET 平台,主要是 .NET Framework 和 Mono/Xamarin,做一次整合,藉此來大幅簡化移植 .NET Core 的功夫。

在此篇文章中,我會介紹我們的計畫、我們將會如何達成這個目標、預計的上市時間,以及這對現在 .NET Core 使用者的意義。

回顧 .NET Core

.NET Core 平台 起始於微軟對於開發者們想要研發一個現代化、模組化、app-local、並且能夠跨平台的 .Net stack 所推出的產品。這項產品背後的商業目標是希望可以提供一個整合的 stack 給全新的應用程式(例如:觸控型 UWP 程式) 或者現代跨平台程式(例如:ASP.NET Core 網站與服務)。

在我們即將推出的 .NET Core 1.0 中,我們成功的開發了一個強大的跨平台開發 stack。.NET Core 1.0 開創了把 .NET 推行到所有平台的先河。

雖然 .NET Core 在我們所制定的情境中運行良好,但不能否認的是它相較於其他市場上的 .NET 平台來說,可兼容的程式較少。相較於 .NET framework 時此情況尤其明顯。一部分是因為不是所有東西都是以跨平台做為目標的情況下開發的,另一部分也是因為我們把一些我們認為不必要功能給刪除了。

種種原因之下,我們了解到如果想要學習並使用 .NET Core,現役的 .NET 開發者必須花費很長一段時間來移植它。

當然,直接重新編一個新的 API 給新的客戶也是一個不錯的方案,但是這種作法彷彿變相的懲罰了長年以來一直使用微軟 API 與技術的忠實客戶。我們是想要把 .NET 平台變得更加強大,並推廣給更多的開發者,但是我們並不能漠視現有使用者的權益。

Xamarin 在這一點上就做得非常好。他們使 .NET 開發者們輕鬆地在 iOS 和 Android 手機上開發行動程式。讓我們來看看 iOS,iOS 其實跟 UWP 有許多的相似之處,例如對終端使用者經驗的高度重視和對靜態編譯的要求。Xamarin 跟 .NET Core 不同的地方在於, Xamarin 並沒有重新構想 .NET Stack。 Xamarin 把 Mono 整套搬過來,刪去了應用程式模型元件 (Windows.Forms, ASP.NET),加入了 iOS 的元件,再改動了一些細節使其適用為內嵌使用。由於 Mono 和 .NET framework 本質上非常相似,經過這種處理方式之後的 API 是非常容易被現役 .NET 使用者學習與接受的,並且使移植現有的程式碼到 Xamarin 更為輕鬆。

當初在構想 .NET 的時候,我們最重要的核心理念就是希望可以使開發者更有生產力以及協助他們撰寫更嚴謹的程式碼。我們設計 .NET 能在更豐富的領域和情境中幫助開發者,從桌面和網站應用程式,到微服務、行動應用程式、甚至遊戲的研發。

為了實現我們的核心理念,開發出一個統一的核心 API,並使其可以在任何條件下使用是必要的。一個統一的核心 API 可以使開發者們簡單的實現程式碼共享橫跨不同的工作量,使每一位開發者的專長可以得到最好的發揮 ──寫出最好的服務與使用者體驗。

.NET Core 的展望

在 Build 2016, Scott Hunter 即展示了下列投影片:

dotnetcore-1

我們想要展現給各位的理念是:

不論您是想要寫桌面應用、行動 App、網站,又或者是微型服務,您都可以使用 .NET 來幫您達成您的目標。也因為我們提供統一的 BCL,程式碼共享將會是一件非常簡單的事情。作為一個開發人員,您可以專注在功能與技術對應至您選擇的使用者體驗與平台。

我們想要這樣實現這些理念:我們將會為以核心基礎類別庫 Base Class Libraries (BCL)為目標的應用程式提供原始碼和二進位碼相容性(binary compatibility), 並保證在所有平台上運作方式的一致性。基礎類別庫(BCL)就是那些存在在 mscorlibSystemSystem.CoreSystem.DataSystem.Xml,而這並不限定特定的應用程式模型和作業系統實作。

不論你將目標放在 .NET Core 1.0 的 surface(以 System.Runtime 為基礎的 surface),還是在即將釋出有擴充 API (以 mscorlib 為基礎的 surface)的 .NET Core 版本,你目前的程式碼都將可以繼續使用。

我們承諾簡化將現有程式碼移植,也將同樣保證在函式庫與 NuGet 套裝軟體上。當然包含可攜式類別函示庫 (portable class libraries)無論他們使用的是 mscorlib 或是 System.Runtime

這裡有幾個有關這次新增的例子可以讓你使用 .NET Core 起來更為順手:

  • Reflection 將會變得跟 .NET Framework 一樣,不需要 GetTypeInfo(),而舊的 .GetType() 回來了。
  • 型別將不再會缺少因為清理原因而已經刪除的成員(Clone()、Close() vs Dispose(),舊的 APM APIs)
  • 二元序列化(BinaryFormatter)將又可以使用

可以到我們 corefx GitHub 的套件庫查看更完整的計畫新增名單。

 

.NET Core 的意義

從我們跟社群的對話當中我們瞭解到他們的疑慮,使用者們擔心這些新增的 API 功能會使得 .NET Core 體驗大打折扣,這完全是個誤解。我們對 .NET Core 絕大多數的投入, 不論是能以 app local 的方式推出,還是 XCOPY deployment, 又或者是我們的 AOT 編譯器工具鏈,其開源與跨平台的理念是不變的。這同樣適用於所有額外的功能和我們對效能的改進,例如新的網路組件 – Kestrel。

一開始當我們在設計 .NET Core 時,就強調模組化以及付費使用的概念,這表示您只需要消耗最終使用之功能的磁碟空間。我們相信我們仍然可以實現這些目標而不會對相容性問題造成太大的影響。

最初,我們仰賴將功能分割在微小的函式庫中來最小化程式的磁碟利用率,而我們也知道用戶喜歡這一點。現在,我們將提供一個比其他手動程序還要更為精確、更好的儲存空間的鏈接工具。這是類似於 Xamarin 開發者現已使用的方式。

 

時程與流程

在我們推出 .NET Core 1.0 RTM 後,我們將開始著手擴充 .NET Core 的 API 介面。如此,持續追蹤 .NET Core 的你們即可部署至生產環境。

在未來幾週,您可以在我們的 corefx GitHub 看到更多詳細資訊與計畫。首先我們會做的就是釋出一系列 API references,列出我們將會推出的 API,那麼當您在移植程式碼時,您就可以有所依循來決定是否要跳轉到 .NET Core 1.0 或是等待即將推出的 APIs。同時,我們也會宣布哪些 API 我們不打算推出,我們希望能為我們的用戶提供一個看板,以查詢專案的狀態與目標。

 

這次將會是對我們為 .NET Core 1.0 做準備所遵循的流程的一大改善,前次發表因為內部流程分享不夠公開而造成的不圓滿,將在這次修正。

最後,我們計畫在 NuGet 上推出更多的 .NET Core API 更新。這些更新會是漸進式的,亦即是我們將會擴充現有的 API 功能,並同步推出更多的 API。這樣一來,使用者們可以得到好處,不用等到 API 完全更新結束才開始使用。這同時也可以讓我們把各位對於運作方式的意見與回饋加入我們的更新中。

在接下來的幾週內,我們將會在 corefx 套件庫公佈更多的資訊。你可以在這個部落格討論相關狀態以及所有的重大決策。

 

本文翻譯自 Making it easier to port to .NET Core


 

 Capture 1 Capture

若對以上技術及產品有任何問題,很樂意為您服務! 請洽:台灣微軟開發工具服務窗口 – MSDNTW@microsoft.com / 02-3725-3888 #4922

.NET Core 1.0 釋出囉!微軟開源跨平台新布局,超越你想像的高效能!

$
0
0

我們很高興宣佈 .NET Core 1.0、ASP.NET Core 1.0 還有 Entity Framework Core 1.0 釋出了,可以適用於 Windows、 OS X 與 Linux 上!.NET Core 是一個跨平台、開源而且模組化的 .NET 平台,可用來建立現代的網路應用、微服務、函式庫與控制台應用程式。

在這個版本中包含了 .NET Core 的運行、函式庫、工具與 ASP.NET Core 函式庫。我們同時還釋出了 Visual Studio 與 Visual Studio Code 的擴充讓您可以創建 .NET Core 的專案。 您可以從這裡開始上手。參閱發行說明來取得更詳細的資訊。

Visual Studio 的團隊在今天也釋出了 Visual Studio 2015 Update 3。您需要這個版本才可以建構 .NET Core apps in Visual Studio

我們今天發表 .NET 文件 在 doc.microsoft.com,微軟新的文件服務。您看到的文件只是個開始。你可以參照我們在 GitHub 上 核心文件 的進度。ASP.NET Core 文件也釋出了而且開源

今天我們在 Red Hat DevNation 的會議上發表了這次的版本和我們與 Red Hat 的合作關係。透過 Channel 9 觀看直播,Scott Hanselman 將會展示 .NET Core 1.0。.NET Core 現在可以透過認證的 Container 在 Red Hat Enterprise Linux 和 OpenShift 上取得。此外 .NET Core 完全被 Red Hat 支援並透過 Microsoft 和 Red Hat 整合的支持合作關係得以延伸。參閱 Red Hat 部落格取得更多詳細的資訊。

這是 .NET 自成立以來最大的轉型,將會定義 .NET 的下個十年。我們已經重建了 .NET 的基礎,使其能夠符合現在世界的需求:高度分散的雲端應用、微服務與 Container

展望未來 .NET Framework、.NET Core 與 Xamarin 都是重要的產品,將會繼續的發展,分別於 Windows、跨平台的雲端與跨平台的行動裝置。.NET Framework 與傳統的 ASP.NET 將會繼續被應用在您現存的工作上。您可以分享程式碼和重新使用您的技能在整個 .NET 的家族,所以你可以決定要使用什麼,還有什麼時候要使用,其中包含 Xamarin 的行動應用程式。因為我們設計 .NET 共享一個函式庫(.NET 標準函式庫).NET Framework、.NET Core 與 Xamarin 的應用程式在未來都可以共享這個新的通用功能。

讓我們開始吧!

在 Windows、OS X 與 Linux 嘗試 .NET Core 與 ASP.NET Core 真的非常容易。您可以在很短的時間完成一個應用程式並執行。您只需要 .NET Core SDK 便可以開始。

最好開始的地方也就是 .NET Core 的首頁。它會提供符合您正在使用的作業系統的 .NET Core SDK 與您需要開始的三~四個步驟。這非常地簡單!

如果您想要使用 Visual Studio,請確定您已安裝 Visual Studio 2015 Update 3。您將會需要安裝 .NET Core Tools for Visual Studio

為了給您一個概念,一旦您安裝了軟體開發套件,您可以輸入下面幾個簡單的指令來建立您第一個「Hello World」程式。首先,生成一個控制台應用程序的模板,第二,重建套件 dependencies,最後建構並運行程式。

dotnet new

dotnet restore

dotnet run

您將會看到這個(不意外!):

Hello World!

您可能很快地會覺得「Hello World」很無聊。您可以參閱更多深入的教程在 .NET Core TutorialsASP.NET Core Tutorials

去看看 Announcing EF Core 1.0 的貼文,來了解如何開始使用 Entity Framework Core 1.0。

.NET Core 的旅程

大約兩年前,我們開始從一些 ASP.NET 的客戶收集有關「.NET on Linux」的需求。大約在同一個時間,我們在與 Windows Server 團隊談論有關 Windows Nano,他們的未來,更小的 Server 產品。因此,我們開始一個新的 .NET 專案針對這些新的平台,我們的代號為「專案 K」。我們在這過程中改變了幾次名字、形狀與產品的體驗,每一次都嘗試讓它變得更好,而且可以適用於更多情境,為開發者提供一個更廣泛的基礎。我們很高興可以看到這個專案終於發表為 .NET Core 與 ASP.NET Core 1.0。

而這個專案另一個重要的主題也就是開源。隨著時間的推移,我們注意到所有重要的網路平台皆是開源的。ASP.NET MVC 已經開源很長一段時間了,但是它底下的平台 .NET Framework 卻沒有。我們沒有給深切關心開源的網路開發者一個答案,MVC 是不夠開放的。從今天的宣布我們可以知道 ASP.NET Core 現在是一個從上到下完完全全開源的網路平台。就連文件也是開源的。ASP.NET Core 對於那些在他們的網路架構中將開源視為必要的人,是一個很棒的選擇。

我們想表達我們的感謝對於每個試過 .NET Core 和 ASP.NET Core 並給予我們回饋的使用者們。我們知道有好幾萬的使用者曾經用過 pre-1.0 的產品,謝謝您們!我們收到了很多有關設計選擇、使用者體驗、性能、聯絡等主題的回饋意見。我們已經盡全力應用這些回饋。這個版本改善了很多地方,而若沒有您們我們不可能完成這些,謝謝您們!

如果您不是一個 .NET 的開發者或有一段時間沒有使用 .NET,現在是一個絕佳的時機嘗試使用它。您可以享受 .NET 的生產力與威力,在任何作業系統,使用任何工具,適用於任何應用程式。所有這一切都已完全開源,是由社會各界與微軟的支援共同開發的。到 dot.net 上看看 .NET 眾多的選擇吧!

社群的貢獻

這是整個 .NET 生態系一個很大的里程碑與成就。將近一萬個開發者促成了 .NET Core 1.0。我們從沒想像這麼多人會貢獻給這個產品。我們也對於這些貢獻的品質感到印象深刻。有些重要的元件是這社群一起推動的。做得好,鄉親們!

我們還發現另外八千個開發者正在關注這些 repo,並且人數是高速的加倍成長。我們相信開發者們關注這些 repo 無論是為了尋找個機會貢獻或者是跟上專案的最新進度作為採用 .NET Core 的方式之一。

在此刻,幾乎一半在 .NET Core 相關專案的 pull requests (例如:corefx、coreclr)是來自於社群,比一年前上升了20%!這樣的趨勢很令人難以置信。快看看 貢獻的 pull request 被 merge 到產品中的開發者們。謝謝您們!

下面是開發者統計,在任何一個 .NET Core 相關的 repo 建立 pull request、建立 issue 或提出意見的細項,以每個組織做區分,使用 GitHub API 來計算:

User Count Organization Example repo
5176 aspnet mvc
3804 dotnet corefx
2124 nuget NuGet.Client
560 microsoft visualfsharp

Total unique users: 9723

注意:使用者總數並不等於直接加總,因為有使用者對多個組織均有貢獻(感謝!),我們試著避免重複計算。

注意:微軟組織的計數是特別給那些已存在的 .NET Core 相關 repo,像是 visualfsharp。

注意:這些數字包含微軟的員工,而這(最多)佔了計數的 10%。

Samsung 加入 .NET 基金會

對 .NET Core 有更多的興趣會驅使更深的投入在  .NET 基金會,該基金會目前管理超過 60 個專案。今天我們宣布 Samsung 是最新的成員。今年四月,Red Hat、Jet Brains 與 Unity 都受到 .NET 基金會技術指導小組的熱烈歡迎。

.NET 是一個顯著提高開發者生產力的偉大技術。Samsung 一直在 Github 上貢獻給 .NET Core—特別是 ARM 支援的部分—我們期待貢獻更多給 .NET 開源的社群。Samsung 很高興能加入 .NET 基金會技術指導小組,幫助更多開發者享受 .NET 所帶來的好處。   – Hong-Seok Kim, Samsung Electronics 副總裁。

Samsung 的貢獻相當可觀。他們有一個很棒的開發團隊對 .NET Core 很有興趣。我們很高興他們能成為這團隊的一份子。

.NET Core 的用法

有些客戶等不及最終的 1.0 版本釋出,已經開始在生產環境中的 Windows 和 Linux 上使用 .NET Core 預覽版。這些客戶告訴我們 .NET Core 對於他們的業務有非常的顯著影響。我們期待未來一年看到很多應用程式將被建置。請保持給予我們回饋,讓我們可以決定下次要增進的功能。

根據 Age of Ascent 的背後團隊 IIIyriad Games 的回報,使用 ASP.NET Core 與 Azure Service Fabric 的 效能增加了 10 倍。我們也非常感激他們貢獻的程式碼造就這樣的高效能。謝謝 @benaadams

網易是一間在中國的領導 IT 公司,提供內容、遊戲、社群影音、媒體溝通與商業等線上服務,需要在不斷進化的手機遊戲市場中維持領先的地位,進而選擇了 .NET Core 作為他們的後端服務。相較於先前他們的 Java 後端架構:「.NET Core 為我們的發佈周期減少了 20% 的時間與工程資源上的花費減少了 30%。」當說到有關傳輸量的改進與節省的成本:「此外,它成功減少一半數量所需的虛擬機器。」

我們使用 Linux 上的網站平台的產業基準作為發行的一部份,包含 TechEmpower Benchmarks。從幾個月前開始,我們在我們的實驗室中分享展示我們的發現。我們希望在發佈後能盡快從 TechEmpower 看到官方的數字。

我們實驗室的運行證明 ASP.NET Core 比一些我們的同業還快。在相同的硬體上,我們看到傳輸量是 Node.js 的八倍快,幾乎是 Go 的三倍快。不過我們還沒有結束!這些進步是從那些即將出現在 1.0 版本中的更改。

.NET 開發者知道這平台是生產力的絕佳選擇。我們想要他們知道這同時也是效能表現絕佳的選擇。

.NET Core 1.0

我們現在大約已經談論 .NET Core 兩年了,雖然它在這段時間顯著地改變。在此篇文中重述什麼定義了 .NET Core 1.0 和 .NET Core 1.0 包含了什麼。

.NET Core 是一個全新的跨平台的 .NET 產品。而 .NET Core 的主要賣點是:

  • 跨平台:可以在 Windows、macOS 與 Linux 上執行。
  • 彈性部署:可以包含在您的應用程式或被並行安裝在使用者面向 (user-wide) 或者機器面向 (machine-wide)。
  • 命令行工具:所有產品的情境皆可以在命令行執行。
  • 相容性:透過 .NET 標準函式庫,.NET Core 是與 .NET Framework、Xamarin 與 Mono 相容的。
  • 開源:.NET Core 平台是開源的,使用的是 MIT 與 Apache 2 許可證。文件都依照 CC-BY 的許可。.NET Core 是一個 .NET 基金會的專案。
  • 由微軟支援:.NET Core是被微軟支援的,每項 .NET Core 都是支援

組成

.NET Core 是由下列幾項所組成:

  • 一個 .NET runtime (通用語言執行平台 CoreCLR),提供一個類型系統 (Type System)、組件載入 (Assembly Loading)、Garbage Collector、原生 interop 與其他基本服務。
  • 一組框架庫,提供原始的資料型態、應用程式組成型態 (App Composition types) 與基本公用程式 (Utilities)。
  • 一組 SDK 工具 與語言編譯器,讓開發者可以有基本的體驗,可以在 .NET Core SDK 中取得。
  • 「dotnet」應用程式主機,用來啟動 .NET Core 應用程式。它選擇與承載執行平台 (runtime),提供一個組件載入政策與啟動應用程式。同個主機也以相同的方式,被用來啟動 SDK 工具。

發佈

.NET Core 有兩個主要的發佈:

  • .NET Core — 包含 .NET Core runtime 與框架。目前的版本是「.NET Core 1.0」。
  • .NET Core SDK — 包含 .NET Core 與 .NET Core 工具。目前的版本是「.NET Core SDK 1.0 Preview 2」。

.NET Core 工具目前被認為是「Preview」。我們選擇「Preview」是因為我們尚未完成工具的塑造。我們知道未來還會有一些變化。這並不是對品質的澄清。我們對於現在的品質還蠻開心的,而且每天使用 .NET Core 工具作為我們工程系統的一部份。

大多數人想要從 dot.net/core 上取得 .NET Core SDK。您當然可以,但是,看看我們最新的版本,可以很容易發現兩個不同的發佈。

工作負載

就 .NET Core 本身而言,它包含了一個單一的應用程式模型 — 控制台應用程式 — 這對於工具、本地服務與以文字為基礎的遊戲是實用的。目前已建置在 .NET Core 上的附加應用程式模型皆延伸了它的功能,例如:

.NET Core 工具

您通常從安裝 .NET Core SDK 開始您的 .NET Core 開發。這個 SDK 包含足夠的軟體來建置一個應用程式。它提供您 .NET Core 工具和一個 .NET Core 的副本。當有新的 .NET Core 版本釋出時,您可以下載並安裝他們,而不需要取得新版的工具。

應用程式透過 project.json 專案檔依據特定的 .NET Core 版本指定其相容性,這個工具可以幫助您取得並使用該 .NET Core 版本。您可以在您機器上 Visual Studio、Visual Studio Code 或命令提示字元中多個應用程式間切換, .NET Core 工具總是為每個應用程式的內容挑選符合的 ,NET Core 版本。

您還可以擁有多個版本的 .NET Core 工具在您的機器上,這對於持續整合與其他情境很重要。大多數時候,您只需要有一個工具的副本,因為這樣提供了一個更簡單的體驗。

dotnet 工具

您的 .NET Core 體驗將會伴隨著 dotnet 工具。它提供了一組常用操作的指令,包含重建套件包、建構您的專案與單元測試。它也包含了一個指令用來建立一個新的空專案,讓您可以很容易開始使用。

下列是部份的指令選項:

  • donet new — 初始化一個範例 console C# 專案。
  • dotnet restore — 對給定的應用程式重建相容性。
  • dotnet build — 建構一個 .NET Core 應用程式。
  • dotnet publish — 發佈一個 .NET 可攜式或獨立的應用程式。
  • dotnet run — 從原始碼執行應用程式。
  • dotnet test — 運行測試,透過 project.json 中指定的測試執行器。
  • dotnet pack — 為您的程式碼建立一個 NuGet 套件。

dotnet 與 C# 專案配合得很好。F# 與 VB 的支援則即將到來。

.NET 標準函式庫

.NET 標準函式庫是一個正式的 .NET APIs 規範,適用於所有的 .NET  Runtimes。標準函式庫背後的動機是為 .NET 生態圈建立一個更棒的一致性。ECMA 335 繼續建立一致的 .NET Runtime 行為,但對於 .NET 函式庫實作的 .NET Base Class Library(BCL)並沒有類似的規範。

.NET 標準函式庫允許以下幾個主要的情境:

  • 定義了一套統一的 BCL APIs 給所有的 .NET 平台去實作與獨立於工作負載。
  • 讓開發者能夠產生可攜式的函式庫,可以跨 .NET Runtime,使用相同的一套 APIs。
  • 減少與希望消除 .NET APIs 共享原始碼的條件編譯,僅適用於 OS APIs。

.NET Core 1.0 實作了標準函式庫,就如同 .NET Framework 與 Xamarin。我們將標準函式庫視為重要的創新焦點,有利多種 .NET 產品。

支援

.NET Core 是被微軟支援的。您可以在開發環境中使用 .NET Core 與在生產環境中部署它,並可以根據需求向微軟請求支援。每個發行版本都有一個定義的生命週期,微軟會提供維護、更新或線上技術支援。

團隊採用了一個新的 .NET Core 服務模型,有兩個不同的版本類型:

  • 長期支援(LTS)版本
    • 通常是一個主要的版本,像是「1.0」或「2.0」。
    • 從一個 LTS 版本上市日後開始支援三年。
    • 而一個 LTS 的後續版本上市日後開始支援一年。
  • Fast Track 支援(FTS)版本
    • 通常是一個很小的版本,像是「1.1」或「1.2」。
    • 與母 LTS 版本一樣支援三年。
    • 而 FTS 的後續版本則是從上市日後支援三個月。
    • 一個 LTS 的後續版本上市日後開始支援一年。

有些客戶想要部署應用程式在很穩定的版本,而不想要新的功能直到應用程式被重新開發。那些客戶應該考慮 LTS 版本。

其他客戶希望能盡快利用這些新的功能,特別是那些總是在開發的應用程式。那些客戶應該考慮 FTS 版本。

注意:我們尚未釋出一個  FTS 的版本。.NET Core 是一個 LTS 的版本。

.NET Core 工具遙測(Telemetry)

.NET Core 工具包含一個遙測功能,這樣我們就可以收集有關 .NET Core 工具使用的資訊。了解工具如何被使用對我們來說很重要,這樣我們就可以做出一些改善。有些工具是在預覽的,部分原因是我們對他們將要使用的方法沒有足夠的資訊。遙測僅止於這些工具,並不會影響您的程式。

行為

遙測功能是默認開啟的。收集的數據實際上是匿名的,將會被以匯總的形式發布給 Microsoft 與在 Creative Commons 許可下的社群工程師使用。

您可以關閉遙測功能,透過設定環境變數 DOTNET_CLI_TELEMETRY_OPTOUT (例如:在 OS X/ Linux 上 export,Windows 上 set)改為 true(例如:「true」,1)。這樣做將會在運行時停止收集的程序。

資料點

這功能收集一下這些資料:

  • 使用的指令(例如:”build“、”restore“)
  • 指令的 ExitCode
  • 測試專案中被使用的測試執行器
  • 調用的時間戳記
  • 使用的框架
  • Runtime IDs 是否有出現在「runtimes」節點中
  • 使用的 CLI 版本

這功能並不會收集任何個人資料,像是用戶名稱或 emails。它不會掃描您的程式碼也不會提起任何被視為敏感的專案級資料,像是名字、repo 或作者(如果您設定那些在您的 project.json)。我們想知道的是這些工具如何被使用,而不是您使用這些工具建構了些什麼。如果您發現有敏感的資料被收集了,那會是一個 bug。請 file an issue ,這個問題將會被修復。

我們使用 .NET Core 工具的 MICROSOFT .NET LIBRARY EULA,而我們也使用所有 .NET NuGet 套件。我們最近新增了一個「DATA」的欄位重新印在底下,可以從工具遙測。我們想要遵循一個 EULA 用於 .NET Core,而只打算從工具收集資料,而不從 runtime 或函式庫。

使用 .NET Core 1.0

您可以使用 Visual Studio、Visual Studio Code 或命令行來建置 .NET Core 的程式。Visual Studio Code 是建置 .NET 程式最新的體驗。讓我們看看如何使用它來建置 .NET Core 的程式。

使用 Visual Studio Code

來看一下使用 Visual Studio Code 的體驗吧!

要開始在 Visual Studio Code 使用 .NET Core,先確認您已經下載並安裝:

您可以打開命令提示字元,輸入 dotnet --version,來驗證您是否安裝了最新的 .NET Core,您的輸出應該會像是下圖:

dotnetpic_1

接下來,您可以建立一個新的資料夾,用命令行透過指令 dotnet new,搭建一個新的「Hello World」C# 程式在資料夾裡面,然後用 code . 在那個資料夾打開 Visual Studio Code。如果您沒有程式碼在您的 PATH,您將會要設定它。

如果您尚未安裝 Visual Studio Code 的 C# 語言插件。您將會想要那樣做。

再來,您將會需要建立和設定 launch.jsontasks.json。Visual Studio Code 將會詢問是否要為您建立這些檔案。如果您並不同意這樣做,您將會要自行建立這些檔案。按照以下步驟:

  1. 在 root level 建立一個新的資料夾叫 .vscode,然後在資料夾中建立 launch.jsontasks.json
  2. 打開 launch.json 並按照下圖的配置:
  1. 打開 tasks.json 並按照下圖的配置:
  1. 導覽到 Debug 選單,並點選 Play 圖示,現在您可以執行您的 .NET Core 程式了!

需要注意的是,如果你從一個不同的資料夾中打開 Visual Studio Code,您可能需要更改 launch.jsontasks.jsoncwd 以及 program 的值,指向您的應用程式的輸出資料夾。

您也可以透過在程式碼中設置 breakpoint,然後點擊 Play 圖示來進行 debug。

與 .NET Framework 比較

.NET Core 與 .NET Framework 的主要差別:

  • 應用模型 — .NET Core 不支援所有的 .NET Framework 應用模型,因為其中很多都是建置在 Windows 技術上,如 WPF (建置在 DirectX 上)。但 console 和 ASP.NET Core 應用模型是被 .NET Core 與 .NET Framework 支援的。
  • APIs — .NET Core 包含了許多與 .NET Framework 一樣但是較少的 APIs,且擁有不同的實現(組件名稱不同;在 key cases 中 Type Shape 不同)。目前這些差異通常需要移植原始碼到 .NET Core。.NET Core 實作了 .NET Standard Library API,將會隨著時間增長,包含更多 .NET Framework BCL APIs。
  • 子系統 — .NET Core在 .NET Framework 實作了一個子集的子系統,來讓實作與編程模型更加容易。例如:Code Access Security(CAS)不被支援,但映射 (reflection) 是被支援的。
  • 平台 — .NET Framework 支援 Windows 和 Windows Server,同時 .NET Core 還支援 macOS 與 Linux。
  • 開源 — .NET Core 是開源的,而 .NET Framework 唯讀子集 是開源的。

雖然 .NET Core 是獨特的也跟 .NET Framework 與其他 .NET 平台有顯著的差異,但它可以用原始碼或二元分享技術,很簡單直覺地分享程式碼。

結語

非常感謝各位的回饋與使用。建構出 .NET Core 並且看到這麼多人嘗試使用真的很令我們高興與感激。敬請持續探索與學習本產品的功能。

當我們有新版本的明確計畫時,我們會立即更新 .NET Core Roadmap

感謝您成為 .NET 社群的一份子!

 

本文翻譯自 Announcing .NET Core 1.0


 Capture 1 Capture

若對以上技術及產品有任何問題,很樂意為您服務! 請洽:台灣微軟開發工具服務窗口 – MSDNTW@microsoft.com / 02-3725-3888 #4922

Application Insights 與 VSTS 工作項目整合

$
0
0

今天我們要來介紹如何使用 Visual Studio Team Services(VSTS)來進行工作項目的整合。工作項目整合的功能讓您可以很容易在 VSTS 上建立嵌入 Application Insights 資料的工作項目。

設定工作項目整合

要對一個 Application Insights 的資源配置工作項目整合,只需要在設定中找到「Configure」的部分,並點選裡面的「Work Items」。

workitem-1

 

點擊,共作項目的設定刀鋒畫面則會顯示,接下來,您只要填寫您想要連結的 VSTS 系統,還有您想要寫入工作項目的專案。

workitem-2

填寫完畢後即可點選 Authorization 按鈕,重新導向到您選擇的 VSTS 系統的授權頁面,授權後工作項目就可以被寫入。

workitem-3

完成授權後,您可以設定「area path」與「assigned to」的初始值。只有 area path 是必須的(如果您在專案中尚未設定特定的 area paths,也沒有關係,只要使用專案的名字當成它最高層級的 area path 就好了)。點選 OK,若您輸入的資訊皆正確的話,將會看到「Validation Successful」的訊息,而刀鋒視窗將會關閉。您就可以準備開始建立工作項目了!

建立工作項目

從 Application Insights 建立工作項目非常容易!目前您可以從兩個地方建立工作項目:Proactive detection 與 individual instances of activity(例如:exceptions、failures、requests等)。我將會用後者的例子來說明,但兩種情況的功能都是相同的。

在這個例子中,我觀察一個已經發佈到 Azure 的測試 web app。我透過查看 Failures 的刀鋒視窗來深入了解這個 app 的活動情況(但我們也可以透過 Search 按鈕或是 Metrics Explorer 來取得相同的資訊):

workitem-4

我們可以看到有一些 exceptions,發生在使用者點擊 Home/About 標籤的時候。如果我再繼續查看這組 exceptions,我可以看到一個 exceptions 的列表,然後可以選擇一個單獨的 exception:

workitem-5

查看這個 exception 的刀鋒視窗,我們可以看到上方有兩個按鈕可以選擇:「New Work Item」與「View Work Items」。要建立一個工作項目,就只要點選第一個按鈕就會開啟新的工作項目的刀鋒視窗:

workitem-6

 

您可以看到大多數的項目都為您填好了,而「area path」與「assigned to」也從您剛剛的初始設定中帶入了,所有我們所能取得有關這個 exception 的資訊都已經被加到 Details 中。您也可以再對這些項目進行修改或增加。當您都設定好之後,就可以點選 OK,而您的工作項目即會被寫入 VSTS 中。

檢視工作項目

您可以很容易地檢視您在 Application Insights 所建立的一個或多個工作項目。如果您在 Azure 入口頁面,有關工作項目事件的詳細內容刀鋒視窗會有個「View Work Items」的按鈕。只要點選該按鈕就可以查看清單:

workitem-7

如果您點選想要查看的工作項目連結,它將會在 VSTS 中開啟:

workitem-8

進階設定

有些人可能有注意到有一個開關的標籤「Advanced Configuration」在設定的刀鋒視窗中。這是一個我們提供的額外功能,幫助您把您修改或延伸的某些額外設定寫入 VSTS。一個很好的例子就是設定額外的必要欄位。目前在一般模式沒有方法可以處理這些,但您可以再進階模式中處理。

如果您將這個功能開啟,這個視窗下面將會多出一個欄位,如下圖:

workitem-9

您可以編輯這個 JSON 的輸入框,來配置您對於 VSTS 專案所需要修改的特定設定/mapping。格子中都有範例文字供您參考。在近期內,我們預計要加強這個功能的 intellisense,並釋出一些基本的指南,讓使用者可以更暸解這個設定模式。

我們的下一步

我們認為這是一個很好的開端,使用 Application Insights 整合工作項目功能。但請注意這只是 1.0 版而已,我們還有很多計畫要做的事,您將會在未來的幾個月看到一些重大的改變。讓我來列出幾項我們已經計劃好或是正在研究的事:

  • 支援所有的工作項目類型 - 您會注意到目前的類型就只有「bug」,當然這是很重要沒錯,但我們並不覺得這樣就足夠。所以您將會可以在 VSTS 中處理所有工作項目類型所支援的程序。
  • 連結回去 Application Insights - 雖然能夠建立工作項目內含 Application Insights 的資訊很棒,但是如果您在您的 ALM 系統中看到一個項目,而您想要快速地查回去其 Application Insights 對應的工作項目呢?我們計畫要加入這個連結,讓這件事變得快又容易。
  • 更彈性的配置 - 目前,當您要改變或延伸您在 VSTS 的專案,您需要切換到進階模式。為了改善這點,我們想要讓使用者在標準模式下也可以改變一些大家可能會調整的設定(例如:使額外的欄位設為必要、增加新的欄位)。我們已經有再進行一些相關的工作了,一旦完成之後我們將會開始讓標準模式變得更彈性。同時您當然也可以使用進階模式來克服任何您遇到的限制。
  • 多個設定檔 - 每次從 Application Insights 建立工作項目時,常常需要修改那些預設的值。我們計畫要讓使用者能夠設定 1:n 的設定檔,所以當您要用某個設定檔建立一個工作項目時,只需要從下拉選單中選擇就可以了。
  • 多個建立工作項目的資源 - 我們將要繼續研究(並呈現反饋)Application Insights 的其他部分,找出合理的地方用以建立工作項目。
  • 自動建立工作項目 - 我們會想要在某些情況下根據一些標準來自動建立工作項目。這絕對是很重要的,但是我們花很多時間來設計,以避免過於喧鬧的可能或逃亡的工作項目的建立。我們相信這將會是一個強大且便利的功能,但我們想要盡可能減少垃圾癱瘓 ALM 系統的潛在問題。
  • 支援其他的 ALM 系統 - 我們覺得 VSTS 是一個超棒的產品 (堅定),但當然很多我們的使用者可能會使用其他的 ALM 產品。因此我們正在整合受歡迎的 ALM 產品。我們打算提供一個完全客製化的設定選擇(像是 VSTS 的進階模式),讓使用者可以在幾乎任何的 ALM 系統中掛上 Application Insights。

短期內我們將會有許多項目要進行,我們也會持續向您更新有關這些功能釋出的最新資訊。請讓我們知道您在使用目前功能的想法與您希望怎麼改進的意見。我們希望這是一個好的開始,幫助您整合您的 Application Insights 與每天的工作,我們也將會持續改進這些體驗。

請在這裡分享您的想法對於新的功能或如何改進,有任何問題可以造訪 Application Insights Forum

 

本文翻譯自 Application Insights:Work item integration with Visual Studio Team Services


Capture

若對以上技術及產品有任何問題,很樂意為您服務! 請洽:台灣微軟開發工具服務窗口 – MSDNTW@microsoft.com / 02-3725-3888 #4922

 

Viewing all 136 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>