Чому опція "Встановити як запуск" зберігається у файлі suo, а не у файлі sln?


175

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

Відповіді:


46

Чому це має бути уподобання, яке не стосується користувачів?

Якщо у мене є рішення з 10 файлами, і один розробник в основному тестує / використовує один із цих інструментів, чому це повинно впливати на те, що я запускаю?

Я думаю, що МС зробив правильний вибір на цьому. Проект, який я хочу розпочати, далеко не обов'язково проект, який хочуть розпочати інші розробники.


133
Часто у вас буде проект, який, швидше за все, є бажаним запуском проекту для більшості людей (наприклад, веб-сайт), і ви не хочете бібліотеку класів як проект запуску. Я не бачу, чому MS не може забезпечити належний механізм (не те, що здається злому, тобто встановлення за замовчуванням вгорі у файлі .sln) для встановлення глобального проекту запуску за замовчуванням, а потім дозволення. suo, щоб перекрити його за бажанням.
Єз

27
Існує, таким чином, кажучи ... Перемістіть проект, який ви хочете встановити як проект запускання за замовчуванням, щоб це був перший проект у файлі sln. Видаліть свій файл suo, відкрийте рішення та задумайте, що перший проект повинен бути запуском. Можуть бути й інші чинники, які сприяють цьому, але я виявив це, коли помітив, що один конкретний проект продовжував дефолт, коли перевіряв чистий проект з контролю джерел.
misteraidan

2
Ця проблема виникає при використанні сервера збирання, оскільки для встановлення правильного проекту запуску та перевірки суо на контроль версій - погана ідея, це вимагатиме перевірки суо на контроль версій.
markhancock

2
@markshancock: Чому сервер побудови піклується про проект запуску? Я ніколи цього не бачив як проблему.
Джон Скіт

18
Вибачте, Джон, але я збираюся дати вам тут -1. Я вірю, що розробники повинні мати можливість завантажувати код, а потім натискати F5, очікуючи, що найзвичайніші налаштування розробки будуть створені та запущені. Звичайно, ви повинні мати можливість налаштувати свої стартапи за особистими обставинами, але ми повинні мати можливість встановити за замовчуванням для більшості користувачів, як зазначено вище. Відповідь Олівера, здається, має певний шлях для цього, хоча, здається, що кілька запуску проектів залишатимуться неможливими для контролю джерел, що шкода.
Стівен Холт

376

Абсолютно необхідно, щоб кожен міг сам визначити свій проект StartUp, як уже сказав Джон . Але мати спеціальний дефолт буде чудово, і, як я можу сказати, можливо!

Якщо у вашому каталозі рішення немає файлу .suo, Visual Studio вибирає перший проект у вашому файлі .sln як проект запуску за замовчуванням.

  1. Закрийте свою Visual Studio і відкрийте .sln файл у вашому улюбленому текстовому редакторі. Починаючи в рядку 4, ви бачите всі ваші проекти , інкапсульовані в Project- EndProjectлінії.

  2. Виріжте і вставте бажаний проект запуску за замовчуванням у верхнє положення.

  3. Видаліть .suo файл.

  4. Відкрийте своє рішення у Visual Studio. Та даа!

Чи є спеціальна нагорода, якщо ви знаєте щось, чого Джон не знає? ;-)


1
Нарешті! Це мене давно клопоче, але вже не більше! Tkanks :)
mdonatas

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

25
ОЦЕ ТАК! Ти примружив Джона! :))
Андрій Ронеа

3
Що робити, якщо є два проекти за замовчуванням - як я можу їх запустити обидва за замовчуванням?
Емі Б

6
@Oliver: Клацніть правою кнопкою миші Рішення -> Встановити проекти запуску ... -> Кілька проектів запуску. Одне клацання починається кілька разів.
Антон

46

У більшості випадків це має сенс мати за замовчуванням для цього.

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

Насправді це було запропоновано у UserVoice Visual Studio .


Пов'язаний UserVoice "закритий для голосування", але жодних коментарів щодо того, чому.
yzorg

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

3

Я написав невелику утиліту командного рядка для Windows, закликаної slnStartupProjectавтоматично встановлювати проект запуску:

slnStartupProject slnFilename projectName

Я особисто використовую його для встановлення проекту запуску після генерації рішення cmake, який завжди встановлює фіктивний ALL_BUILDпроект як перший проект у рішенні.

Джерело знаходиться на GitHub. Вилки та відгуки вітаються.


Дякую за це! У мене була саме ця проблема з cmake, і ваша утиліта чудово працює!
sippa

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

Ти .. чекай ... що? - Ви генеруєте .sln файл вручну? ... що це за чаклунство?
BrainSlugs83

3

Якщо ви використовуєте GIT, ви можете скористатися файлом SUO за замовчуванням, а потім позначити його як незмінний за допомогою

git update-index --assume-unchanged YourSolution.suo

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

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