Visual Studio 2015開發(fā) 新功能概述

本文概述

最近在將自己所在的項目升級到VS2015坠非,本文記錄和整理了一些在升級VS2015時自己所查閱的一些VS2015新功能資料敏沉,隨著自己閱讀的不斷延伸,我會持續(xù)更新炎码。這篇日志的主要內(nèi)容如下所示:

  1. 調(diào)試部分: 將介紹一些有助于調(diào)試的新功能盟迟;
  2. 團隊協(xié)作部分:主要介紹在VS2015中可以完成的git操作, 可以在VS2015中完成Git flow操作, 下載GitFlow for Visual Studio 2015潦闲;
  3. 可能會影響編譯部分的改動: 在升級舊工程過程中攒菠,遇到了一些編譯問題,將會把自己遇到的一些問題和相關(guān)解決方案做一些介紹矫钓,希望能對有類似問題的朋友有所幫助要尔。

1. 調(diào)試部分##

1.1 斷點設(shè)置

VS2015引入了斷點設(shè)置功能,當(dāng)鼠標(biāo)懸浮在斷點上時新娜,會出現(xiàn)設(shè)置按鈕和斷點禁用按鈕。

在斷點設(shè)置按鈕中既绩,有如下設(shè)置:

  • Conditional statement:使用戶能夠自定義斷點觸發(fā)表達式概龄,只有表達式為true時,觸發(fā)斷點;
  • Hit counts:只有當(dāng)斷點觸發(fā)累積到一定次數(shù)后激活饲握;
  • Filter:只有當(dāng)觸發(fā)某個進程私杜、線程或MachineID時觸發(fā);
  • Tracepoints: 可設(shè)置斷點觸發(fā)時救欧,向日志輸出的信息以及是否繼續(xù)運行斷點后續(xù)代碼衰粹。 如圖所示:

對下圖所示代碼



可得到如下結(jié)果:



Tracepoints輸出可使用偽變量名,其映射關(guān)系如下:
Pseudo Variable: Description:
$ADDRESS Current Instruction
$CALLER Previous Function Name
$CALLSTACK Call Stack
$FUNCTION Current Function Name
$PID Process Id
$PNAME Process Name
$TID Thread Id
$TNAME Thread Name

原文介紹鏈接

1.2 性能分析工具

VS2015中的性能測試工具PerTips笆怠,在斷點調(diào)試時以超鏈接的方式顯示于斷點處代碼行末尾铝耻,提示用戶自上一斷點到當(dāng)前斷點間的時間估值。如下圖所示:
性能分析工具
性能分析工具

如果點擊PerTips
則會打開圖形診斷工具顯示內(nèi)存和CPU占比信息, 可點擊鼠標(biāo)選擇放大或縮小選中區(qū)域,查看詳細(xì)信息瓢捉。如下圖所示:
這些信息將有助于代碼性能分析频丘。除斷點外,我們還可以在代碼行右擊鼠標(biāo)->運行到光標(biāo)處(Ctrl+F10)來查看性能分析工具泡态。

如需要更多信息請參閱PerTips

1.3 Light Bulbs

VS2015中提供了light bulbs工具用以幫助用戶對警告或錯誤進行快速修復(fù)搂漠。當(dāng)VS2015對部分代碼在其下方以波浪線標(biāo)注時,如果用鼠標(biāo)點擊該行或者用鼠標(biāo)懸浮至波浪線處時某弦,會顯示燈泡圖標(biāo)桐汤。當(dāng)用鼠標(biāo)點擊(自測左鍵或右鍵點擊有效)時,會彈出快速修復(fù)提示靶壮〔⑵耄可根據(jù)提示選項修復(fù)可能存在問題的代碼。
light_bulbs.png

2. 團隊協(xié)作功能

  • VS2015中可以看到當(dāng)前文件的修改情況安拟。在當(dāng)前被打開的文件下方噪漾,有兩個超鏈接。如下圖所示:
    git_change_link.png
  • 上圖中左側(cè)超鏈接是本次文件上次修改時間和修改者名稱蜂莉。點擊該超鏈接后蜡娶,會以圖形化的方式顯示此文件總修改次數(shù),每個修改者的修改次數(shù)映穗。
    git_file_commit_graph.png
  • 圖git_change_link.png中窖张,藍色部分的右側(cè)超鏈接顯示當(dāng)前打開文件的修改者人數(shù)和修改次數(shù)。點擊后會顯示此文件的每一次修改的commit message和代碼提交時間蚁滋。
    git_commit_history.png
  • 雙擊上圖中單個commit后宿接,會在Visual Studio中打開此次提交的詳細(xì)信息
    git_commit_detail.png
  • 單擊涉及到的文件后,會在右側(cè)窗口顯示改動細(xì)節(jié)
    git_commit_change_detail.png
  • 這樣就不用再打開smartgit來比較每次提交的改動了辕录,全部操作都可以在VS2015里完成睦霎。此外,為了和正常的文件區(qū)分走诞,VS2015將打開的文件前加了diff前綴副女,如下圖所示:
    git_commit_diff.png
  • 單擊Team->Manage Connections可打開Team Explorer窗口并進行相關(guān)操作。

3. 可能會影響編譯部分的改動

用VS2015打開原工程時蚣旱,會彈出將platform tools set升級為VS2015(v140)的界面碑幅。 我當(dāng)時選擇了升級主工程以及依賴工程。但是在編譯階段塞绿,遇到了如下問題:

  1. fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration
    經(jīng)過查閱相關(guān)資料沟涨,原來是在很多庫中,使用了如下定義: #define snprintf _snprintf但是在VS2015中在C99中也定義了snprintf()异吻,因此引發(fā)了重復(fù)定義裹赴。要解決此類錯誤,可通過如下預(yù)編譯指令解決:
    #if _MSC_VER>=1900
    #define STDC99
    #else
    #ifndef snprintf
    #define snprintf _snprintf
    #endif
    #endif
    _MSC_VER相關(guān)宏定義如下:
    MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
    MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
    MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
    ......
  2. error LNK2019: unresolved external symbol _imp__fprintf referenced in function
    在網(wǎng)上查閱資料得知,是由于VS2015做了如下改動引起:
    在之前版本中:
    _CRTIMP FILE * __cdecl __iob_func(void);
    #define stdin (&__iob_func()[0])
    #define stdout (&__iob_func()[1])
    #define stderr (&__iob_func()[2])
    struct _iobuf {
    char *_ptr;
    int _cnt;
    char _base;
    int _flag;
    int _file;
    int _charbuf;
    int _bufsiz;
    char _tmpfname;
    };
    typedef struct _iobuf FILE;
    而在VS2015中:
    _ACRTIMP_ALT FILE
    __cdecl __acrt_iob_func(unsigned);
    #define stdin (__acrt_iob_func(0))
    #define stdout (__acrt_iob_func(1))
    #define stderr (__acrt_iob_func(2))
    typedef struct _iobuf
    {
    void
    _Placeholder;
    } FILE;
    解決方案

我找到了一篇微軟有關(guān)VS2015C++重大改動的文章篮昧,有興趣的同學(xué)請參考這里赋荆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市懊昨,隨后出現(xiàn)的幾起案子窄潭,更是在濱河造成了極大的恐慌,老刑警劉巖酵颁,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫉你,死亡現(xiàn)場離奇詭異,居然都是意外死亡躏惋,警方通過查閱死者的電腦和手機幽污,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來簿姨,“玉大人距误,你說我怎么就攤上這事”馕唬” “怎么了准潭?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長域仇。 經(jīng)常有香客問我刑然,道長,這世上最難降的妖魔是什么暇务? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任泼掠,我火速辦了婚禮,結(jié)果婚禮上垦细,老公的妹妹穿的比我還像新娘择镇。我一直安慰自己,他們只是感情好蝠检,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布沐鼠。 她就那樣靜靜地躺著,像睡著了一般叹谁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乘盖,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天焰檩,我揣著相機與錄音,去河邊找鬼订框。 笑死析苫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播衩侥,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼国旷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了茫死?” 一聲冷哼從身側(cè)響起跪但,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎峦萎,沒想到半個月后屡久,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡爱榔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年被环,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片详幽。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡筛欢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唇聘,到底是詐尸還是另有隱情版姑,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布雳灾,位于F島的核電站漠酿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谎亩。R本人自食惡果不足惜炒嘲,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匈庭。 院中可真熱鬧夫凸,春花似錦、人聲如沸阱持。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衷咽。三九已至鸽扁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間镶骗,已是汗流浹背桶现。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鼎姊,地道東北人骡和。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓相赁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親慰于。 傳聞我的和親對象是個殘疾皇子钮科,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,163評論 25 707
  • 源代碼管理工具的起源 為什么會出現(xiàn)源代碼管理工具? 為了解決在軟件開發(fā)過程中婆赠,由源代碼引發(fā)的各種蛋疼繁瑣問題 源代...
    小白文_Vincent閱讀 3,172評論 2 8
  • 沅茵 七十年代冬天的早晨绵脯,一輪紅色霞光鋪滿大雜院,格外的燦爛页藻,格外的明亮桨嫁。老人說那不是冬天,也不是霞光份帐,更...
    沅茵閱讀 587評論 0 1
  • 今天吃過晚飯璃吧,去學(xué)校對面小區(qū)兜兜轉(zhuǎn)轉(zhuǎn)。在修路废境,大路中間挖出很大的坑畜挨,隔斷學(xué)校和小區(qū),如銀河一般噩凹,隔開了牛郎和織女巴元。...
    小西西西西西瓜閱讀 324評論 0 0
  • 我的老公是家中長子逮刨,按說是很有擔(dān)當(dāng)很成熟的男子漢,可惜他下面是兩個妹妹堵泽,而我的婆婆又是一個極其重男輕女的人修己,所以對...
    藩茗閱讀 314評論 1 1