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


97

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

У диспетчері конфігурацій я видалив інші конфігурації (наприклад, "Випуск"), але, коли я це зробив, з'явилося попереджувальне повідомлення, яке повідомляє, що вони не будуть видалятися з окремих проектів.

І справді, коли я переходжу до окремого проекту, він все ще має "Release" та інші конфігурації, хоча на рівні рішення існує лише "Debug".

Як найкраще видалити ці додаткові конфігурації з кожного проекту? Я пропускаю якийсь спосіб зробити це в графічному інтерфейсі, чи мені просто редагувати файли проекту безпосередньо?

Відповіді:


191

У диспетчері конфігурацій виберіть "Редагувати ..." у стовпці "Конфігурація" для кожного проекту (а не за допомогою спадного меню "Активна конфігурація рішення"), яке має конфігурації, які потрібно видалити.

У діалоговому вікні, що з’явиться, позначте кожну небажану конфігурацію та виберіть «Видалити».


22
Дякую! Я хотів би, щоб Visual Studio запропонував більш швидкий спосіб видалення конфігурації для всіх проектів. Якщо у вас є близько десятка проектів у вирішенні, важко пройти кожен із них і вручну видалити конфігурацію.
Stefano Ricciardi

1
@Matthias Я прошу різнитися. І ні, це не було змінено (з моменту, коли я відповів на це у 2009 році, до версії 2013).
Тімбо

1
Якщо я заходжу до Configuration Manager, видаляю активну конфігурацію рішення за допомогою редагування, тоді конфігурація дійсно видаляється з Configuration Manager. Але якщо ви зараз перейдете до властивостей вашого проекту, то конфігурація все ще є. Якщо ви заглянете всередину файлів .vcxproj, то конфігурація все ще є. Я використовую Visual Studio 2013 (Professional and Ultimate)
Matthias

1
@Matthias Уважно прочитайте (особливо частину кожного проекту ). Можливо, вибір / порядок у моїй відповіді недостатньо оптимізований для найкращої зрозумілості, але це не змінює, працює це чи ні.
Тімбо

1
@ Стефано Ріккарді через 5 років, чи знайшов ти рішення для такого болю?
cppBeginner

10

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

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


8

Найкращий спосіб автоматизованого видалення конфігурації з усіх проектів рішення робиться за допомогою команди консолі Nuget для доступу до Visual Studio APIS.

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

Звідти використовуйте:

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

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

Додаткову інформацію можна отримати в документації api, що відповідає версії візуальної студії. Це працює щонайменше з 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 a була повернена COM з виклику до компонент. У рядку: 1 char: 30 + ... | Foreach {$ _. ConfigurationManager.DeleteConfigurationRow ("DLL-Impor ...
Террі,

Для мене добре працювало, рішення проектів на C ++. Дякую за пораду!
Північний мейнфрейм

3

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


Це лише для проектів на C ++? Я думаю, що вкладка, на яку ви посилаєтесь, - це "Перегляд> Інші Windows> Менеджер властивостей"?
Стівен Андерсон,

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