Чи слід додати файли Visual Studio .suo та .user до керування джерелом?


841

Рішення Visual Studio містять два типи прихованих файлів користувача. Один - .suoфайл рішення, який є двійковим файлом. Інший - .userфайл проекту, який є текстовим файлом. Які саме дані містять ці файли?

Мені також було цікаво, чи варто додати ці файли до управління джерелом (в моєму випадку Subversion). Якщо я не додаю ці файли, а інший розробник перевірить рішення, чи Visual Studio автоматично створить нові файли користувачів?


9
.suo файли відтворюються автоматично. Чудовий спосіб "оновити" налаштування за замовчуванням, якщо щось порушиться.
CodingBarfield

3
Кращі практики для проектів Subversion і Visual Studio - це загальне питання щодо цієї точної теми. Також прийнята відповідь містить посилання на офіційну документацію MSDN, де докладно описано, які файли / каталоги VS-рішень / проектів повинні бути додані до систем управління джерелами, а які частини слід ігнорувати.
Аттіла Ціпак

3
для * .suo, дивіться тут: msdn.microsoft.com/en-us/library/bb165909.aspx
smwikipedia

Відповіді:


673

Ці файли містять конфігурації налаштувань користувачів, які в основному характерні для вашої машини, тому краще не розміщувати їх у SCM. Крім того, VS буде змінювати його майже кожного разу, коли ви виконуватимете його, тому SCM завжди буде позначати SCM як "змінений". Я не включаю жодного, я вже 2 роки працюю над проектом, що використовує VS, і у мене не було проблем із цим. Єдине незначне роздратування полягає в тому, що параметри налагодження (шлях виконання, ціль розгортання тощо) зберігаються в одному з цих файлів (не знаю, який), тому якщо у вас є стандарт для них, ви не зможете ' опублікувати "через SCM, щоб інші розробники мали все середовище розробки" готове до використання ".


22
Будьте уважні, файл-файл зберігає інформацію про те, чи проект завантажений / вивантажений в межах рішення.
Кугель

5
Я вважаю, що він зберігає інформацію про налагодження у файлі .user (принаймні для інструментів даних SQL Server). Крім того, коли ви змінюєте налаштування на вкладці Налагодження, не завжди зберігається .user відразу (закриття рішення, здається, працює, трохи дратує ... або змінює інше налаштування, збережене у файлі .sqlproj).
jamiebarrow

87
Ви можете відкрити і .user, і .csproj файли в будь-якому текстовому редакторі. Я просто перевірив копіювання вставлення відповідних налаштувань налагодження з .user в .csproj, а потім видалив файл .user. Налагодження продовжувало працювати, радісно читаючи правильні налаштування з їх нового місця у файлі .csproj. Це має забезпечити спосіб встановлення налаштувань налагодження без введення файлу .user. Не забудьте встановити їх у правильній конфігурації (налагодження, випуск тощо). Працює на моїй машині! =)
Кріс Нільсен

139

Не потрібно їх додавати - вони містять налаштування кожного користувача, а інші розробники не захочуть вашої копії.


19
Якщо ви працюєте самостійно над декількома різними машинами, чи варто їх додати?
thepocketwade

33
Я б не став, тому що це може бути неміцним до несподіваних системних відмінностей; наприклад, якщо ви працюєте на x64 на роботі та x86 вдома, то вона може задихатися над "c: \ програмними файлами (x86)" та "c: \ програмними файлами". Я не знаю, але я б не ризикував.
Стів Купер

2
Хоча вони містять специфічну для користувача інформацію, але інформація про файли, які знову додаються через (включити в проект) параметр, також знаходиться у файлі .csproj, я думаю, що вимагає від інших користувачів вручну додавати всі щойно додані ресурси проекту. Якщо хтось знає вирішення, будь ласка, зазначте тут.
цепелін

69

Інші пояснили, чому мати файли *.suoта *.userфайли під контролем джерела - це не дуже гарна ідея.

Я хочу запропонувати вам додати ці шаблони до svn:ignoreвласності з 2 причин:

  1. Тому інші розробники не закінчуються налаштуваннями одного розробника.
  2. Таким чином, коли ви переглядаєте статус або вводите файли, ці файли не захаращують базу коду та не затьмарюють нові файли, які потрібно додати.

Де і як встановлюється svn:ignoreмайно?
Пітер Мортенсен

@PeterMortensen, дивіться це запитання: stackoverflow.com/questions/86049/…
JXG

Але є випадок (див. Цю відповідь ) для додавання знака .user, тож ви можете вибрати не лише ігнорувати .suo- а можна ігнорувати .user, щоб прийняти свідоме рішення додати їх? Не думайте так, суть svn:ignoreполягає в тому, щоб позначити речі, де не потрібно свідомого рішення.
PJTraill

49

Ми не робимо двійковий файл (* .suo), але ми робимо файл .user. Файл .user містить, наприклад, параметри запуску для налагодження проекту. Параметри запуску можна знайти у властивостях проекту на вкладці "Налагодження". Ми використовували NUnit в деяких проектах і конфігурували nunit-gui.exe як варіант запуску проекту. Без файлу .user кожен член команди повинен був налаштувати його окремо.

Сподіваюсь, це допомагає.


4
Я також починаю вважати, що це має бути так - фіксуйте файл користувача, щоб розробники в команді використовували однакові налаштування налагодження. Якщо вони поміняють його на власній машині, все одно добре, якщо стандартним способом є версія в керуванні джерелом.
jamiebarrow

1
Інші пропонують проти цього робити, але я не впевнений, які небезпеки можуть бути. Може тому, що файл репо з менш точними налаштуваннями підірвав би (краще) локальну копію користувача? (Наша команда використовує Mercurial, BTW.)
Джон Кумбс

2
Microsoft не радить додавати .user файл до керування джерелом.
DavidRR

1
Ви можете перемістити налаштування налагодження до .csproj, подивитися цей коментар
Timbo

26

Оскільки я знайшов це питання / відповідь через Google у 2011 році, я подумав, що зайняти секунду і додати посилання на файли * .SDF, створені Visual Studio 2010, до списку файлів, які, ймовірно, не слід додавати до контролю версій ( IDE їх знову створить). Оскільки я не був впевнений, що * .sdf-файл може мати законне використання в іншому місці, я ігнорував лише конкретний [ім'я проекту] .sdf-файл із SVN.

Чому майстер перетворення Visual Studio 2010 створює масивний файл бази даних SDF?



23

Ні, не слід додавати їх до керування джерелами, оскільки - як ви вже сказали - вони залежать від користувачів.

SUO (Параметри користувача рішення): записує всі параметри, які можна пов’язати зі своїм рішенням, щоб кожен раз, коли ви відкриваєте його, він включав налаштування, які ви зробили.

Файл .user містить параметри користувача для проекту (в той час як SUO призначений для рішення) і розширює ім'я файлу проекту (наприклад, Everything.csproj.user містить налаштування користувача для проекту what.csproj).


20

Схоже, це думка Microsoft щодо цього:

Додавання (та редагування) файлів .suo до керування джерелом

Я не знаю, чому ваш проект зберігає DebuggingWorkingDirectory у файлі suo. Якщо це налаштування для користувача, вам слід розглянути можливість його збереження у імені файлу * .proj.user. Якщо це налаштування доступне для всіх користувачів, які працюють над проектом, вам слід розглянути можливість його збереження у самому файлі проекту.

Не думайте навіть додавати файл suo до керування джерелом!Файл SUO (параметри користувальницьких програм Soluton) повинен містити специфічні для користувача налаштування, і він не повинен ділитися серед користувачів, які працюють над тим самим рішенням. Якщо ви додаєте файл suo в базу даних scc, я не знаю, які інші речі в IDE ви зламаєте, але з точки зору контролю джерела ви порушите інтеграцію SCC веб-проектів, використовувався плагін Lan vs Internet різними користувачами для доступу до VSS, і ви навіть можете змусити scc повністю розірватися (шлях VSS до бази даних, збережений у файлі suo, який може бути дійсним для вас, може бути недійсним для іншого користувача).

Алін Константин (MSFT)


Також з файлу MSDN: File Options (Параметр користувача) . Перше речення робить наміри Microsoft досить зрозумілими: "Файл користувачів параметрів рішення (.suo) містить параметри рішення для кожного користувача. Цей файл не повинен бути зареєстрований для контролю вихідного коду."
DavidRR

19

За замовчуванням Visual SourceSafe Майкрософт не включає ці файли в джерело керування, оскільки це файли налаштувань. Я б дотримувався цієї моделі, якщо ви використовуєте SVN як керування джерелом.


12

Visual Studio автоматично створить їх. Я не рекомендую ставити їх у контроль джерел. Неодноразово файли SOU місцевого розробника змушували VS поводитись нестандартно у вікні цього розробника. Видалення файлу та надання можливості відновлення VS завжди вирішує проблеми.


У мене залишився файл .sou, і він створював проблему з перезавантаженням пакетів. Видалення файлу .sou вирішило проблему. Дякую.
Мерседес

11

На веб-сайті MSDN чітко зазначено, що

Файл користувача з параметрами рішення (.suo) містить параметри рішення для кожного користувача. Цей файл не повинен бути зареєстрований у контролі вихідного коду .

Тому я б сказав, що цілком безпечно ігнорувати ці файли під час перевірки матеріалів до вашого джерела управління.


9

Я б не став. Все, що могло змінитись на кожного користувача, зазвичай не є хорошим у контролі джерела. .suo, .user, obj / bin каталоги


8

Ці файли є специфічними для користувача параметрами, які не повинні залежати від самого рішення. Visual Studio створить нові за необхідності, тому їх не потрібно перевіряти для управління джерелами. Дійсно, було б краще цього не робити, оскільки це дозволяє окремим розробникам налаштувати своє середовище так, як вони вважають за потрібне.


7

Ви не можете керувати джерелами файлів .user, оскільки це специфічно для користувача. Він містить назву віддаленої машини та інших речей, що залежать від користувача. Це файл, пов'язаний з vcproj.

Файл .suo - це файл, пов’язаний з sln, і він містить "параметри користувача рішення" (проект запуску, положення вікна (що докинуто і де, що плаває) тощо)

Це двійковий файл, і я не знаю, чи містить він щось "пов'язане з користувачем".

У нашій компанії ми не беремо ці файли під контроль джерела.


7

Вони містять конкретні налаштування щодо проекту, які зазвичай призначаються одному розробнику (як, наприклад, стартовий проект та початкова сторінка для запуску під час налагодження програми).

Тому краще не додавати їх до контролю версій, залишаючи VS відтворити їх, щоб кожен розробник міг мати конкретні налаштування, які він хоче.


5

.user - це налаштування користувача, і я думаю, що .suo - це параметри користувача. Ви не хочете, щоб ці файли знаходилися під контролем джерела; вони будуть створені для кожного користувача.



4

Використовуючи Rational ClearCase, відповідь - ні. Тільки .sln &. * Proj повинен бути зареєстрований у контролі вихідного коду.

Я не можу відповідати за інших постачальників. Якщо я пам'ятаю правильно, ці файли - це "користувацькі" параметри, ваше оточення.


only the .sln & .*proj should be registered- Ви не забули тут багато файлів?
Вовк

@Wolf крім очевидного
Polluks

3

Не додайте жодного з цих файлів до контролю версій. Ці файли автоматично генеруються за допомогою конкретної інформації про робочу станцію, якщо вона зареєстрована у контролі версій, що спричинить проблеми на інших робочих станціях.


2

Ні, вони не повинні зобов’язуватися керувати джерелами, оскільки вони є локальними налаштуваннями для розробника / машини.

GitHub підтримує список запропонованих типів файлів, які користувачі Visual Studio ігнорують за адресою https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

Для svn у мене є такий global-ignoreнабір властивостей:

* .DotSettings.User
* .onetoc2
* .suo
.vs
PrecompiledWeb
thumbs.db
OBJ
бін
налагодження
* .user
* .vshost. *
* .Tss
* .dbml.layout


1

Якщо ви встановите свої виконувані залежності від dir в ProjectProperties> Debugging> Environment , шляхи зберігаються у файлах '.user'.

Припустимо, я встановив цей рядок у вищезгаданому полі: "PATH = C: \ xyz \ bin" Ось як він зберігатиметься у файлі ".user":

<LocalDebuggerEnvironment>PATH=C:\xyz\bin$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>

Це нам дуже допомогло під час роботи в OpenCV. Ми могли використовувати різні версії OpenCV для різних проектів. Ще одна перевага полягає в тому, що налаштувати наші проекти на новій машині було дуже просто. Нам просто довелося скопіювати відповідні режими залежності. Тому для деяких проектів я вважаю за краще додавати ".user" до керування джерелами.

Хоча це повністю залежить від проектів. Ви можете зателефонувати, виходячи з ваших потреб.


Для цього також дуже добре працюють символьні посилання.
sɐunıɔ ןɐ qɐp

1

Як пояснено в інших відповідях, і те, .suoі інше .userне слід додавати до керування джерелами, оскільки вони є специфічними .suoдля користувача / машини (BTW для новіших версій VS було переміщено у спеціальний тимчасовий каталог .vs, який слід повністю уникати від контролю джерела).

Однак якщо вашій програмі потрібна певна настройка середовища для налагодження у VS (такі налаштування зазвичай зберігаються у .userфайлі), може бути зручно підготувати зразок-файл (іменуючи його як .user.SAMPLE) та додати його до джерела управління для довідок.

Замість жорстко закодованого абсолютного шляху в такому файлі є сенс використовувати відносні або покладатися на змінні середовища, тому вибірка може бути достатньо загальною, щоб легко повторно користуватися іншими.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.