Почему опция "Установить как старт" хранится в файле suo, а не в sln файле?

Кажется, что этот параметр должен храниться в файле решения, чтобы он делился между всеми пользователями и частью управления исходным кодом. Поскольку мы не проверяем файл suo, каждый пользователь должен установить это отдельно, что кажется странным.

Ответ 1

Почему это должно быть предпочтение, не зависящее от пользователя?

Если у меня есть решение с 10 файлами, и один разработчик в первую очередь тестирует/использует один из этих инструментов, почему это должно повлиять на то, что я запускаю?

Я думаю, что MS сделала правильный выбор на этом. Проект, который я хочу начать, - далеко не обязательно проект, который хотят начать другие разработчики.

Ответ 2

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

Если у вас нет файла .suo в каталоге решений, Visual Studio выбирает первый проект в вашем .sln файле в качестве проекта запуска по умолчанию.

  • Закройте свою Visual Studio и откройте файл .sln в своем любимом текстовом редакторе. Начиная с строки 4, вы видите все ваши проекты, заключенные в строки Project - EndProject.

  • Вырезать и вставить желаемый проект запуска по умолчанию в верхнее положение.

  • Удалите файл .suo.

  • Откройте свое решение в Visual Studio. Ta daa!

Есть ли специальная награда, если вы знаете то, что Джон не знает?; -)

Ответ 3

В большинстве случаев имеет смысл иметь значение по умолчанию.

Было бы лучше разместить проект запуска по умолчанию и сохранить его в файле .sln, но который может быть переопределен разработчиком в файле .suo. Если параметр запуска не найден в файле .suo, будет использован проект запуска по умолчанию в .sln.

На самом деле это было предложенное в Visual Studios UserVoice.

Ответ 4

Я написал небольшую утилиту командной строки для Windows под названием slnStartupProject, чтобы автоматически установить Startup Project:

slnStartupProject slnFilename projectName

Я лично использую его для установки проекта запуска после генерации решения с помощью cmake, который всегда задает фиктивный проект ALL_BUILD как первый проект в решении.

Источник находится на GitHub. Вилки и отзывы приветствуются.

Ответ 5

Если вы используете GIT, вы можете зафиксировать SUO файл по умолчанию, а затем пометить его как неизмененный с помощью

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

Он также работает, если вы хотите иметь более одного проекта в своей стартовой группе по умолчанию. Единственным недостатком, о котором я знаю, является то, что эту команду должны выполнять все, кто не хочет фиксировать SUO файл.