Где хранятся настройки Startup Project для решения?

Когда я щелкаю правой кнопкой мыши свое решение в обозревателе решений и выбираю «Свойства», я получаю диалоговое окно, в котором я могу выбрать запускаемый проект.

Иногда я выбираю Текущий выбор (если это экспериментальное решение с большим количеством проектов, между которыми я перехожу), но чаще всего выбирается проект с одним запуском, который обычно является основным приложением WinForms или или консольным приложением.

Моя проблема в том, что всякий раз, когда я выполняю очистку дерева с помощью команды tfpt (Team Foundation Power Tools 2008), этот параметр забывается. Поэтому, когда я пытаюсь запустить свое решение в следующий раз, по умолчанию используется какой-то случайный проект, и я получаю сообщение об ошибке, в котором говорится, что я не могу запустить библиотеку классов или что-то в этом роде. Что конечно очевидно. Но где хранится эта настройка? Почему об этом забывают, когда я чистю дерево? Файл решения все еще там, верно? Разве там не хранятся свойства решения?


person Svish    schedule 06.08.2009    source источник
comment
Дубликат: stackoverflow.com/questions/694685/   -  person Kirtan    schedule 06.08.2009


Ответы (3)


Ссылка 1

Ариан Кулп говорит:

Я изо всех сил пытался понять, почему одно из моих решений не запускалось правильно. Это было в VB с четырьмя проектами. При первоначальном открытии он устанавливает определенный проект с выходом DLL в качестве запуска. Если я установил EXE в качестве запускаемого проекта, все было нормально, но когда я распространяю код, я всегда очищаю его, удаляя файлы * .suo и * .user и папки bin / obj. При открытии «очищенной» версии она всегда возвращалась к проекту DLL и не могла нормально выполнить F5. Исправление оказалось простым, хотя мне любопытно, зачем мне вообще это нужно было делать.

В файле решения есть список записей псевдо-XML «Проект». Оказывается, что то, что было первым, в конечном итоге становится проектом запуска, если оно не отменено в файле suo. Ага. Я просто изменил порядок в файле, и это хорошо.

Я предполагаю, что C # такой же, но я его не тестировал. Надеюсь, это кому-то поможет!

Ссылка 2

Настройка проекта StartUp

Какой проект является запускаемым, имеет какое-либо отношение только к отладке, что означает, что это пользовательские метаданные с точки зрения решения и проектов. Независимо от того, какой проект является запускаемым, скомпилированный код остается неизменным.

По этой причине информация сохраняется как пользовательская настройка в файле параметров пользователя решения (solution.suo), который прилагается к файлу решения (solution.sln). Файл .suo Записывает все параметры, которые вы можете связать с вашим решением, так что каждый раз, когда вы открываете его, он включает настройки, сделанные вами в соответствии с MSDN.

Файл .suo - это двоичный файл. Если вы хотите прочитать или изменить его программно, вы должны использовать IVsPersistSolutionOpts.LoadUserOptions из пространства имен Microsoft.VisualStudio.Shell.Interop.

person Kirtan    schedule 06.08.2009
comment
Я пробовал это в Visual Studio 2010 SP1, и простого перемещения псевдо-xml недостаточно. Вам также необходимо переместить группу записей в группе GlobalSection (ProjectConfigurationPlatforms) = postSolution, которая имеет GUID проекта, который вы переместили наверх. Итак, есть два места для перемещения линий. Не связывайтесь с информацией об управлении версиями. - person Audie; 19.07.2011
comment
Этого достаточно для Preview 3 2019 г. - person Matt Thomas; 10.05.2019

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

Я не могу подтвердить это, но это мое предположение.

К сожалению, это не XML, это двоичный файл, который нелегко редактировать.

person Charlie    schedule 06.08.2009

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

slnStartupProject slnFilename projectName

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

Источник на github:

https://github.com/michaKFromParis/slnStartupProject

Форки и отзывы приветствуются.

Надеюсь это поможет!

person michaK    schedule 04.10.2014