2013年3月12日

Visual Studio Express 與 Professional (專業版) 的差異


最近安裝了Visual Studio 2010 Express的軟體(C++, C#),想了解與專業版(Professional)的差異,於是編譯測試了一些程式碼範例。

Visual Studio C++ Express為例,我發現可產生Lib, DLL, EXE等檔案,也可以透過內附的 MASM ml.exe 編譯 x86 組合語言的 asm 程式,但只能產生32位元版本的程式檔案。
從 UI 介面上亦發現支援編譯產生 Mutl-Threaded 或 Open MP 的 Code

其他較清楚的差異說明資訊,終於在網路上發現微軟官方的說明,分享給大家參考。
(下次如果老闆或主管問為什麼要買專業版而不用免費版時,這些資訊就可以拿出來用。)

上述網頁中微軟的相關說明文字摘錄於下:

QVisual Studio Express Professional 以上版本的主要功能差異?

AExpress僅提供最基本開發功能供學習及上手用,Professional/Premium/Ultimate 主要是供專業開發者/企業及團隊開發用,因功能差異點很多,但對於專業開發者實務開發上,在此列出 Express 版的主要差異,
1. 有限的專案範本與專案類型的支援
Visual Studio Express 版大多內建於各式 Microsoft 開發套件 (SDK),例如 Visual Studio 2010 Express for Windows Phone 內建於 Windows Phone SDK 7.1。還有些是可以獨立安裝的,如開發 ASP.NET / ASP.NET MVC Visual Web Developer Express,或開發 Windows Form 應用程式的 Visual Basic Express, Visual C++ ExpressVisual C# Express
依據不同的用途,Express 版僅提供最基本的專案範本,從網路上下載的一些專案類型或程式碼範例很有可能無法開啟,原因可能是少了專案範本、項目範本,例如:安裝專案 (Setup Project)、單元測試專案、WCF 服務、SQL Server 報表應用程式、工作流程應用程式等。
除此之外,像是類別設計師 (Class Designer)、程式碼定義視窗 ( Code Definition Window ) 等則無法使用。
2. 缺少巨集功能
一般在開發專案時,會利用巨集功能處理一些重複性的編輯工作,在 Visual Studio 2010 Express 無法使用。
3. 缺少 Visual Studio 2010 擴充管理員 ( Add-Ins, Wizard, VSPackages … )
Visual Studio 2010 擴充管理員提供 Visual Studio 2010 的擴充能力,可以下載並安裝許多好用的免費元件、擴充套件及範本、範例程式等,使用 Express 版無法使用擴充管理員。
關於一些常用的擴充套件,可以參考 Visual Studio 2010 開發技巧文章  Visual Studio Gallery,可以找到很多非常實用的套件。
4. 缺乏版本控管及完整軟體生命週期管理機制
Visual Studio 2010 Professional / Premium/ Ultimate 內建了與 Team Foundation Server (TFS) 伺服器整合的相關功能,但是在 Visual Studio 2010 Express 裡是不支援的。
5. 偵錯工具(Debugging Tools)
偵錯功能是開發過程中極其重要的功能,Visual Studio 2010 Express 裡有基本的功能,例如設定中斷點、單步執行、監看式視窗 (Watch Window)、本地變數視窗 (Local Window)、呼叫堆疊視窗 (Call Stack Window)、即時視窗 (Immediate Window)、輸出視窗 (Output Window) 等。
但還有一些常見的偵錯功能在 Visual Studio 2010 Express 並不提供,例如:附加至處理序 (Attach to process)、自動視窗 (Autos Window)、中斷點視窗 (Breakpoints Window)、呼叫瀏覽器 (Call Browser)JIT 偵錯 (Just-In-Time Debugging)
6. 單元測試 (Unit Test) - Express 版不提供單元測試功能
7. 64 位元程式開發  – Express 版不支援 64 位元應用程式開發
8. 若是 Web 開發者 - 下表列出 Visual Studio 2010 Professional 中可用的額外功能。更高階版本 – Premium Ultimate 亦包含 Professional 版的全功能,詳細功能比較,請參考 - Visual Studio 2010 版本比較表
功能
詳細資料
Web 控制項程式庫範本
Web 控制項程式庫專案範本可讓開發人員撰寫自訂的 Web 伺服器控制項。範本會加入建立控制項所需的專案項目,接著才能將控制項加入至任何 Web 專案。
Windows Presentation Foundation (WPF)
Windows Presentation Foundation (WPF) 提供統一的程式撰寫模型 (Programming Model),可為使用者建置豐富的 Windows 用戶端,在其中整合 UI、媒體和文件。
ASP.NET Crystal Reports
Crystal Reports Visual Studio 的報表工具,可讓開發人員建立互動、具簡報品質的內容。
SQL Server Compact Edition
SQL Server Compact Edition 是一款免費且容易使用的內嵌式資料庫引擎,可讓您建置穩固的 Windows 桌面及行動應用程式,以在所有 Windows 作業系統 (包括 Windows XPVistaPocket PC 以及 Smartphone) 上執行。
其他XML 功能
Visual Studio 包含 XML 支援,例如:
·         XSLT 偵錯工具。
·         XSD 結構描述設計工具。
·         XML 執行個體建立 XML 結構描述的能力。
·         XML 編輯器檢視 XSLT 輸出的能力。
·         編輯 XSLT 樣式表時的智慧驗證支援。
·         用於 XML 編輯的即時線上工具列。
其他程式碼編輯功能
Visual Studio 包含其他程式碼相關功能,例如 [程式碼定義] 視窗和更多的重構 (Refactoring) 支援。
[程式碼定義] 視窗是唯讀的編輯器檢視,可顯示使用中專案儲存在程式碼檔案中或加以參考之符號的定義。
重構 (Refactoring) 是在程式碼撰寫之後,藉由變更程式碼內部結構來改善程式碼的程序,這項程序不會變更程式碼的外部行為。
其他建置支援
Visual Studio 包含其他建置支援,包含定義建置前和建置後命令的功能、強式名稱簽署,與程式碼存取安全性 (CAS) 設定。
其他程式碼撰寫公用程式
Visual Studio 包含其他程式碼撰寫公用程式,例如原始檔控制的整合支援。它同時含轉換公用程式,可將 Visual Basic 6.0 專案轉換為 Visual Studio 中的 Visual Basic 專案。

2013年3月11日

Visual Studio C++ 2010 編譯設定參考


Visual Studio C++ 2010 編譯設定參考

  Solution Explorer 下 點選 Solution項目按右鍵選 Properties
    Property Pages 視窗
      Configuration Properties (Debug Version之$(Configuration)為Debug)
         General
            Output Directory => $(ProjectName)$(Configuration) (所設定之值存入$(OutDir) )
            Intermediate Directory => $(ProjectName)$(Configuration)\tmp
            Target Name => $(ProjectName)
         C/C++
           General
             Additional Include Directories => (#include 檔案的路徑,使用$(SolutionDir)要注意 sln檔所在的目錄,若需 include外部 lib,需加入相關 header檔的路徑。程式中的 #include 後的 header檔名內盡量不用相對路徑或絕對路徑,減少因程式或所使用參數之目錄發生異動,造成無法 include到正確路徑的 header檔。)
         Linker  (執行檔或DLL檔)
           General
             Output File => $(OutDir)xxx.exe ($OutDir為前面"Output Directory"所設定之目錄)
             Additional Library Directories => (設定所需其他 lib 檔 的目錄集合,編譯後產生的 lib檔可統一集中手動複製到專案目錄下的"Lib Debug"或"Lib Release"供其他程式專案使用)
           Input
             Additional Dependencies => (放入所要連結的外部 lib檔案名稱,若Debug版與Release版檔名不同,則需注意設定正確。)

         Librarian  (Lib檔)
           General
             Output File => $(OutDir)xxx.lib ($OutDir為前面"Output Directory"所設定之目錄)
             Additional Dependencies => (意義同上)
             Additional Library Directories => (意義同上)