Как удалить конфигурацию проекта в Visual Studio 2008?

98

У меня есть решение Visual Studio 2008, в которое я импортировал ряд уже существующих проектов. Проекты представляют собой примеры кода на разных языках (C #, VB, C ++ / CLI). В настоящее время у них есть несколько конфигураций, но я хочу, чтобы каждый проект имел только одну конфигурацию «Отладка».

В диспетчере конфигураций я удалил другие конфигурации (например, «Release»), но при этом появилось предупреждающее сообщение о том, что они не будут удалены из отдельных проектов.

И действительно, когда я перехожу к отдельному проекту, у него все еще есть «Release» и другие конфигурации, хотя на уровне решения есть только «Debug».

Как мне лучше всего удалить эти лишние конфигурации из каждого проекта? Я упускаю из виду какой-то способ сделать это в графическом интерфейсе или мне просто нужно напрямую редактировать файлы проекта?

Эрик
источник

Ответы:

191

В диспетчере конфигураций выберите «Изменить ...» в столбце «Конфигурация» для каждого проекта (не в раскрывающемся списке с именем «Конфигурация активного решения»), у которого есть конфигурации, которые вы хотите удалить.

В появившемся диалоговом окне отметьте каждую нежелательную конфигурацию и выберите «Удалить».

Тимбо
источник
22
Спасибо! Я бы хотел, чтобы Visual Studio предлагала более быстрый способ удаления конфигурации из всех проектов. Если у вас в решении около дюжины проектов, будет сложно просмотреть каждый из них и вручную удалить конфигурацию.
Стефано Риккарди,
1
@Matthias Я не согласен. И нет, он не менялся (с того момента, когда я ответил на это в 2009 году, до версии 2013 года).
Timbo
1
Если я перейду в диспетчер конфигураций, удалю активную конфигурацию решения с помощью редактирования, тогда конфигурация действительно будет удалена из диспетчера конфигураций. Но если вы сейчас перейдете в свойства своего проекта, то конфигурация все еще будет там. Если вы заглянете внутрь файлов .vcxproj, то конфигурация все еще там. Я использую Visual Studio 2013 (Professional и Ultimate)
Маттиас,
1
@Matthias Прочтите внимательно (особенно часть для каждого проекта ). Возможно, выбор / порядок слов в моем ответе не оптимизированы должным образом для лучшего понимания, но это не меняет, работает это или нет.
Timbo
1
@Stefano Ricciardi, 5 лет спустя, нашли ли вы решение этой боли?
cppBeginner
10

Чтобы проиллюстрировать ответ Тимбо, вот о чем он говорит. Как и некоторым комментаторам, мне потребовалось время, чтобы это найти.

введите описание изображения здесь

Том Винтер
источник
9

Лучший способ автоматизировать удаление конфигурации из всех проектов решения - использовать консольную команду Nuget для доступа к API Visual Studio.

Перейти к Tools , NuGet Package Manager , Package Manager Console .

Оттуда используйте:

Get-Project -All | Foreach { $_.ConfigurationManager.DeleteConfigurationRow("Release") }

Таким образом, вы удалили все конфигурации из всех вызванных проектов "Release". Я настоятельно рекомендую вам всегда проверять различия в вашей системе управления версиями исходного кода, вы увидите только csprojи в некоторых случаях slnзатронутые файлы, если вы используете преобразования конфигурации (например, Web.Release.config), они все еще будут там.

Дополнительная информация доступна в документации api для конкретной версии Visual Studio здесь , это работает как минимум с VS 2015 для языков C ++, C #, F #, VB.

Джулио Каччин
источник
Не могли бы вы дать какую-нибудь ссылку, например, как вы пришли к этому коду? Есть ли учебник? Я хочу быть уверенным, что это не сломает мой проект, я смогу поддерживать его сам и, вероятно, использовать для других целей.
javaLover
Спасибо! Я заметил дерево тем (вверху страницы) в вашей ссылке Docs > .NET > ... > DeleteConfigurationRow. Работает ли это только для решения .net? Вы также тестировали его для решения C ++?
javaLover
Не работал в VS2019 в моем решении C ++: ошибка HRESULT E_FAIL была возвращена из вызова компонента COM. В строке: 1 символ: 30 + ... | Foreach {$ _. ConfigurationManager.DeleteConfigurationRow ("DLL-Impor ... + CategoryInfo: OperationStopped: (:) [], COMException + FullyQualifiedErrorId: System.Runtime.InteropServices.COMException Ошибка HRESULT E_FAIL был возвращен из вызова COM компонент. В строке: 1 символ: 30 + ... | Foreach {$ _. ConfigurationManager.DeleteConfigurationRow ("DLL-Impor ...
Терри,
У меня отлично сработало, решение проектов C ++. Спасибо за чаевые!
Nordic Mainframe
3

Не отвечает на этот конкретный вопрос, который я знаю, но с VS2013 вы можете открыть вкладку Property Manager, развернуть все конфигурации проекта, выполнить множественный выбор с помощью клавиш CTRL или SHIFT и удалить конфигурации сразу из нескольких проектов.

scott_ish
источник
Это только для проектов C ++? Я предполагаю, что вкладка, о которой вы говорите, - это «Вид> Другие окна> Менеджер свойств»?
Стивен Андерсон,