VS2008: где хранится настройка проекта запуска для решения? - PullRequest
17 голосов
/ 06 августа 2009

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

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

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

Ответы [ 3 ]

17 голосов
/ 06 августа 2009

Ссылка 1

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

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

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

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

Ссылка 2

Настройка запуска проекта

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

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

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

1 голос
/ 06 августа 2009

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

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

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

0 голосов
/ 04 октября 2014

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

slnStartupProject slnFilename projectName

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

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

https://github.com/michaKFromParis/slnStartupProject

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

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

...