visual-studio ignore設定 - 我應該將Visual Studio.suo和.user文件添加到源代碼管理中嗎?




svn設定 2017 (14)

默認情況下,Microsoft的Visual SourceSafe不包括源代碼管理中的這些文件,因為它們是用戶特定的設置文件。 如果您使用SVN作為源代碼控制,我會遵循該模型。

Visual Studio解決方案包含兩種類型的隱藏用戶文件。 一個是解決方案.suo文件,它是一個二進製文件。 另一個是項目.user文件,它是一個文本文件。 這些文件究竟包含哪些數據?

我也一直想知道我是否應該將這些文件添加到源代碼管理(在我的情況下是Subversion)。 如果我不添加這些文件並且其他開發人員檢查了解決方案,Visual Studio會自動創建新的用戶文件嗎?


不,你不應該將它們添加到源代碼控制中,因為 - 正如你所說的 - 它們是用戶特定的。

SUO(解決方案用戶選項):記錄您可能與解決方案關聯的所有選項,以便每次打開它時都會包含您所做的自定義。

.user文件包含項目的用戶選項(而SUO用於解決方案)並擴展項目文件名(例如anything.csproj.user包含用於anything.csproj項目的用戶設置)。


.user是用戶設置,我認為.suo是解決方案用戶選項。 您不希望這些文件受到源代碼控制; 他們將為每個用戶重新創建。


這些文件是用戶特定的選項,應該獨立於解決方案本身。 Visual Studio將根據需要創建新的,因此它們不需要簽入到源代碼控制。 事實上,最好不要這樣做,因為這允許個人開發人員按照他們認為合適的方式定制他們的環境。


我不會。 任何可能因“用戶”而改變的東西在源代碼控制中通常都不好。 .suo,.user,obj / bin目錄


這似乎是微軟對此事的看法: http://social.msdn.microsoft.com/forums/en-US/vssourcecontrol/thread/dee90d75-d825-4c76-a30f-016eab15ef7f : http://social.msdn.microsoft.com/forums/en-US/vssourcecontrol/thread/dee90d75-d825-4c76-a30f-016eab15ef7f

我不知道為什麼你的項目將DebuggingWorkingDirectory存儲在suo文件中。 如果這是用戶特定的設置,則應考慮將其存儲在* .proj.user文件中。 如果該設置可以在所有使用該項目的用戶之間共享,則應考慮將其存儲在項目文件本身中。

不要想到將suo文件添加到源代碼管理中! SUO(soluton用戶選項)文件旨在包含用戶特定的設置,不應在使用相同解決方案的用戶之間共享。 如果你要在scc數據庫中添加suo文件,我不知道你會打破IDE中的其他什麼東西,但是從源代碼管理的角度來看,你會打破web項目的scc集成,使用Lan vs Internet插件由不同的用戶進行VSS訪問,甚至可能導致scc完全中斷(存儲在suo文件中的VSS數據庫路徑可能對您有效,但可能對另一用戶無效)。

阿林·康斯坦丁(MSFT)


您不需要添加這些內容 - 它們包含每個用戶的設置,而其他開發人員不會需要您的副本。


它們包含通常分配給單個開發人員的項目特定設置(例如,在調試應用程序時啟動的項目和啟動頁面)。

所以最好不要將它們添加到版本控制中,讓VS重新創建它們,以便每個開發人員都可以擁有他們想要的特定設置。


我們不提交二進製文件(* .suo),但我們提交.user文件。 .user文件包含例如用於調試項目的啟動選項。 您可以在選項卡“調試”中找到項目屬性中的開始選項。 我們在一些項目中使用了NUnit,並將nunit-gui.exe配置為項目的開始選項。 如果沒有.user文件,每個團隊成員都需要單獨配置它。

希望這可以幫助。


msdn.microsoft.com/en-us/library/bb165909.aspx ,它明確指出

解決方案用戶選項(.suo)文件包含每個用戶的解決方案選項。 這個文件不應該簽入到源代碼控制

所以我會說,在檢查源代碼控制中的東西時忽略這些文件是非常安全的。


您無法源代碼控制.user文件,因為這是用戶特定的。 它包含遠程機器的名稱和其他依賴用戶的東西。 這是一個vcproj相關的文件。

.suo文件是一個sln相關文件,它包含“解決方案用戶選項”(啟動項目,窗口位置(什麼是停靠的和哪裡,什麼是浮動的)等)

這是一個二進製文件,我不知道它是否包含“與用戶有關”的內容。

在我們公司,我們不會將這些文件放在源代碼管理下。


Visual Studio將自動創建它們。 我不建議將它們放在源代碼管理中。 曾經有很多次當地開發者的SOU文件導致VS在該開發者框中表現不正常。 刪除文件,然後讓VS重新創建它總是解決問題。


其他人解釋了為什麼在源代碼控制下使用*.suo*.user文件不是一個好主意。

我想建議你將這些模式添加到svn:ignore屬性中,原因有二:

  1. 所以其他開發人員不會收到一個開發人員的設置。
  2. 因此,當您查看狀態或提交文件時,這些文件不會混淆代碼庫並遮蓋需要添加的新文件。

提交更改

一旦你編輯了一個文件,你需要將你的修改提交到git。 當你執行這個命令時,它會要求提交一條提交信息 - 這只是一小段文字,告訴大家你已經改變了什麼。

$ git commit source/main.c

將在目錄./source/中提交文件main.c

$ git commit -a # the -a flag pulls in all modified files

將提交所有更改的文件(但不是新文件,那些需要使用git-add添加到索引中的文件)。 如果你只想提交某些文件,那麼你將需要先使用git-add進行階段化,然後在沒有-a標誌的情況下提交。

提交只會改變你的本地倉庫,而不會改變遠程倉庫。 如果您想將提交發送到遠程存儲庫,那麼您需要進行推送。

$ git push <remote> <branch> # push new commits to the <branch> on the <remote> repository

對於來自CVS或SVN的人來說,這是一個變化,因為現在提交到中央存儲庫需要兩個步驟。





visual-studio svn version-control ignore