如何在 Visual Studio 2012 控制 TFS 版控時要忽略哪些檔案
幾乎在任何一種版本控管的機制裡,都會遇到那些「不應該簽入到版本庫」的潛規則,以往我們在用 SVN 的時候,我就寫過幾篇文章要大家注意這點。最近都改用 TFS 做版控,因為大多使用 Visual Studio 作為主要開發工具,那些不需要的檔案被簽入 TFS 的機率大幅降低。但是,任何可能會發生的問題總是會發生 (墨菲定律第一條),前陣子就真的有人把一堆不該簽入的檔案都簽入到 TFS 裡,不緊緊導致空間浪費,更進一步影響其他人建置專案,因此有在使用 TFS 的人還是必須注意一下。
首先,我們先來看看問題是怎樣發生的:
在 Visual Studio 2012 裡面進行版本控管,只要方案中所有專案的專案檔 ( *.csproj 或 *.vbproj ) 只要出現在檔案清單中的那些檔案,預設都會被加入到 TFS 版本庫裡,也代表著所有沒出現在檔案清單中的檔案,預設也會被排除在外,例如常見的 bin、obj 目錄,或是 *.csproj.user 使用者環境定義檔等等。
不過,在簽入檔案時,雖然有許多檔案沒有列在專案檔中,但這些檔案的確存在檔案總管理,至於要不要加入版控,就因人而異了,全看專案的需求而定。然而,也是因為這樣,導致初學者真的很難判斷,到底這些檔案應不應該加入到版本控管裡?若遇到「熱心」的開發人員,這些檔案就會進入版本控管中!
這些尚未被加入到原始碼控管行列中的檔案,預設在 Visual Studio 2012 都會被自動偵測出來,並置於如下圖標示的位置。這些檔案並不屬於排除的變更,而是被偵測出來也許可以加入到版控的檔案清單:

當你把這些檔案選取,並且按下 “升級" 按鈕,這些檔案就會被自動加入到 TFS 版本控制裡,直到你執行簽入動作 (Check-in),這些檔案就會進入到 TFS 版本控管裡。

要徹底解決這個問題,避免新手誤加了這些檔案進 TFS,你可以參考以下步驟:
1. 先從 Visual Studio 2012 開啟這些自動偵測出來的檔案清單,按下 Ctrl+A 全選後,按下滑鼠右鍵,然後點擊「忽略這些本機項目」,如下圖示:

2. 這時你會看到在「包含的變更」中,多出了一個 .tfignore 檔案,而且在「排除的變更」裡也看不到偵測到的檔案了。

3. 你可以用滑鼠雙擊 .tfignore 這個檔案,查看其內容,這個檔案會列出你剛剛設定「忽略這些本機項目」的檔案清單,不過還可以再優化忽略清單的內容:

以我這次示範的例子來說,這裡的 packages 目錄是 NuGet 存放 NuGet 套件的目錄,照理說可以不用放進版本控管,因為你只要在 Visual Studio 2012 裡設定啟用 NuGet 套件還原,就可以自動還原這些檔案,以減少版本控管的空間占用。

※ 相關文章請參考【NuGet 1.6 提供的新功能:啟用 NuGet 套件自動回復】與【NuGet 教學影片】。
不過,用過的人一定知道,NuGet 套件會不斷更新,因此,如果要像這樣設定「忽略這些本機項目」的話,你不就每次更新 NuGet 套件都要再設定一次「忽略這些本機項目」,這太麻煩了!因次我們可以利用萬用字元 (Wildcard characters) 幫你把眾多忽略項目的設定濃縮成一個。以我們剛剛圖片上看到的例子,最後我們可以把內容濃縮到只剩下一行而已,如下:
\Web\packages\*
但是,我們又不是所有 packages 目錄下的所有檔案都要加入忽略清單,因為在 NuGet 套件管理員裡,packages\repositories.config 這個檔案是應該要加入版控的!
若要忽略 \Web\packages 資料夾下的所有檔案與目錄,但保留 \Web\packages\repositories.config 檔案的話,此時你可以將 .tfignore 檔案的內容修改成如下:
\Web\packages\*
!\Web\packages\repositories.config
只要加入一個驚嘆號 ( ! ),就可以從忽略清單中排除此條件。
除此之外,我額外再分享一個加入忽略清單的小技巧,因為我們都會安裝 Elmah 來收錄 ASP.NET 網站執行過程中各種例外狀況,這些含有錯誤紀錄的 XML 檔都會儲存在 App_Data\Elmah.Errors 目錄裡,所以當在開發環境中也收錄到這些錯誤時,也切記不要加入到 TFS 版控之中,為了避免有人不小心加入,將這些錯誤紀錄的檔名規則加入到 .tfignore 檔案中也是有必要的,以下是加入範例,僅供參考:
\Web\WebSite\App_Data\Elmah.Errors\error-*.xml
如何在 Visual Studio 2012 控制 TFS 版控時要忽略哪些檔案的更多相关文章
- Visual Studio 2012 Ultimate旗舰版下载地址与序列号
(为了方便个人使用转的的别的帖子的内容,原文链接http://wenku.baidu.com/link?url=acL08J8bTNQ4S5Sd3n3oLN5KJTtrfe8hHuP8aUrNscKN ...
- 微软 Visual Studio 2012 Update4正式版下载
今天微软正式发行Visual Studio 2013全新的开发工具,但是仍然没有忘记对旧版开发工具的软件升级服务.同样也是在VS2013发布这一天,微软也为VS 2012提供了正式版的Visual S ...
- 如何在Visual Studio 2012中发布Web应用程序时自动混淆Javascript
同Java..NET实现的应用程序类似,Javascript编写的应用程序也面临一个同样的问题:源代码的保护.尽管对大多数Javascript应用公开源代码不算是很严重的问题,但是对于某些开发者来说, ...
- Visual Studio 2012中文旗舰版(序列号和下载地址)
序列号:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC 链接: http://pan.baidu.com/s/1pLGhDjl 密码: 3udq
- Microsoft Visual Studio 2012旗舰版(VS2012中文版下载)官方中文版
Microsoft Visual Studio 2012 Ultimate旗舰版(VS2012中文版下载)是一个最先进的开发解决方案,它使各种规模的团队能够设计和创建出使用户欣喜的引人注目的应用程序. ...
- 在Visual Studio 2012中使用VMSDK开发领域特定语言(一)
前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modeling SDK进行领域特定语言(DSL)的开发,包括两个部分的内容.在第一部分中,将对 ...
- 安装Visual Studio 2013 中文社区版
Visual Studio 2013 免费了,我收到邮件后,立即从邮件的下载连接安装了 Visual Studio Community 2013 with Update 4 . 安装后几天没打开,今天 ...
- 在Visual Studio 2012中使用VMSDK开发领域特定语言1
在Visual Studio 2012中使用VMSDK开发领域特定语言(一) 前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modelin ...
- Visual Studio 2012简体中文专业版密钥(激活码)
VS2012 正式版在Beta版的基础上进行了很多改进,尤其是加入了全新的用户界面. VS2012 的硬件需求与VS2010相同,不过由于 Visual Studio 2012 利用了新版 Windo ...
随机推荐
- 【一段日子荟萃】where should I go.
当<UNIX环境高级编程>和<鸟哥的私房菜>到我的桌头的时候,我忽然产生了厌倦的心. NO,我不是想做这个,我不是想学习这个操作系统的结构和接口. 我想些一个操作系统,更一般的 ...
- 本人为项目组制定的一份页面优化指南(easyui页面优化方案)
#本人为项目组制定的一份页面优化指南(easyui页面优化方案) ##背景 这是一篇我之前为项目组制定的页面优化指南,主要是面向表单页面,典型的像[注册用户](https://passport.cnb ...
- html5 canvas图片翻转
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 全面理解Linux输入输出重定向
全面理解Linux输入输出重定向 本教程通过视频方式讲解shell操作,理解感念,教程通俗易懂,比起看一大堆文档要舒服的多.本次教程主要讲解 Linux Shell 中支持输入输出重定向,用符号&l ...
- JVM内存的那些事
前言 对于C语言开发的程序员来说,在内存管理方面,必须负责每一个对象的生命周期,从有到无. 对于Java程序员你来说,在虚拟机内存管理的帮助下,不需要为每个new对象都匹配free操作,内存泄露和内存 ...
- show index 之Cardinality (mysql)
show index 之Cardinality 官方文档的解释: Cardinality An estimate of the number of unique values in the inde ...
- Active Record快速入门指南
一.概述 Active Record(中文名:活动记录)是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录.关系型数据库往往通过外键来表述实体关系,A ...
- 【131】如何讲好PPT
1 列提纲2 写稿子3 背稿子4 演练5遍,用自己的话说出来,最好和稿子一样,但不强求一样,关键要理解5 不一定要做,但是做好了会有很大提高,讲的时候也会很NB:有时间可以再演练几遍,录出来看看哪里需 ...
- MYSQL数据库性能调优之六:备份
增量备份
- Java模板引擎 FreeMarker
@(编程) [TOC] 1. 简介 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写.它是为Java程序员提供的一个开发包.它不是面向最终用户的,而是为程序员 ...