Як визначити, чому візуальна студія може пропускати проекти, будуючи рішення


95

Я налагоджую чужу роботу, і рішення досить велике. Коли я намагаюся створити все, кілька проектів у рамках рішення не будуються, а просто пропускають. Перегляд вікна виводу під час процесу збірки говорить:

1> ------ Пропущено Відновити все: Проект: pr1lib ------

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

Це стосується VS2008, і рішення складається з кодів c # та c ++.


На додаток до наданих відповідей, переконайтесь, що параметри конфігурації рішення мають кожен проект у перевіреному стані (прапорець встановлений), який слід очистити / побудувати:Build > Configuration Manager: check as needed
— Metro Smurf

2
Щоб вирішити, чому проекти пропускаються. Не забудьте додати /flдо налаштувань збірки, щоб отримати файл msbuild.log, який включає причину. Наприклад:skipped, due to false condition; ( ('$(Configuration)' == 'Release') and ('$(Platform)' == 'Any CPU') ) was evaluated as ( ('Debug' == 'Release') and ('AnyCPU' == 'Any CPU') ).
— T_D

2
@T_D - де у Visual Studio я б додав '/ fl'? Де б з'явився журнал? Якщо ви додасте це як відповідь, я підтримую, оскільки більшість інших відповідей - це різні випадкові здогадки для вирішення проблеми, а не відповіді на вихідне питання, яке стосувалось просто отримання додаткової інформації про проблему.
— PaulG

@PaulG Дивіться мою відповідь нижче. Просто встановіть налаштування в Параметри.
— Даррен Вуд,

Відповіді:


88

Клацніть правою кнопкою миші рішення, виберіть Властивості, а потім Властивості конфігурації. Тут ви можете вибрати, які проекти будувати.

[ редагувати ]:
Див. коментар Kdt: ... коли я переглядав властивості конфігурації ... ціль збірки проекту була налаштована для "Змішаних платформ", тоді як рішення було встановлено для побудови "Будь-якого процесора".

* Коли ця проблема трапилася зі мною, основний проект мав лише "Будь-який процесор", і для дочірньої DLL він також встановлював значення "будь-який процесор", однак я видалив цей профіль і залишив лише "x86". Вибір x86 для просто dll змусить його почати працювати
[/ редагувати]


20
У мене була загадкова "Пропущена збірка", і коли я заглянув у властивості конфігурації, проект справді був позначений для збірки. Однак ціль побудови проекту була налаштована для "Змішаних платформ", тоді як рішення було встановлено для побудови "Будь-якого процесора" - зміна їх відповідно до вирішеної проблеми.
— kdt

2
У моєму випадку, хоча всі проекти та рішення були встановлені на "Будь-який процесор", один проект пропустив створення. Лише після того, як я встановив рішення для «Змішаних платформ», а потім повернувся до «Будь-якого процесора», він побудував би його. Переглядаючи різницю у файлі рішення до і після, він змінився з {784BDC39-5783-4128-956E-99EA062FA8FB}.Debug|AnyCPU.ActiveCfg = Debug|AnyCPUна {784BDC39-5783-4128-956E-99EA062FA8FB}.Debug|AnyCPU.ActiveCfg = Debug|Any CPU. Єдина відмінність - доданий пробіл між "Будь-яким" та "Процесором" у кінці рядка.
— Simon Tewsi

6
У моєму випадку для всіх проектів було встановлено значення «Будь-який процесор», і проблема вирішувалася шляхом видалення проектів (видалення проекту не призводить до видалення файлів) та повторного додавання їх у рішення.
— Хамід Майєлі,

40

У мене просто була однакова проблема - "проект вивантаження" та "проект перезавантаження" вирішили проблему!


У мене така сама проблема, і розвантаження / перезавантаження справді працює, але проблема, здається, повертається, що дратує, коли трапляється з купою проектів, і вам доводиться розблоковувати / перезавантажувати кожен із них ... Хтось знає, чи є як уникнути цього взагалі?
— Liron

Це вирішило проблему для мене, коли Visual Studio помилково повідомляв про проекти, що вже були оновленими у вікні виводу, під час спроби побудови.
— Кевін Лейті

32

Будівництво, перебудова та чисті операції пропускались. Розвантаження та перезавантаження не допомогли, як і перезапуск Visual Studio.

Після того, як я вилучив проект із рішення та додав його назад, він більше не пропускається. Щоб видалити його, у Провіднику рішень клацніть проект правою кнопкою миші> Видалити> ОК. Щоб повернути його назад, у Провіднику рішень клацніть правою кнопкою миші рішення> Додати> Існуючий проект і виберіть свій проект


7
Майте на увазі, вам доведеться повторно додати всі посилання ProjectReference до цього проекту.
— Джозеф

9

Якщо конфігурацією є x64, а компілятор x64 не встановлений, проект буде пропущено.


1
+1 Геній. Ви можете знайти SP1 тут: microsoft.com/download/uk/details.aspx?id=10986
— ashes999

Коли компілятор x64 не встановлений, ви навіть не можете вибрати x64.
— Calmarius

Конфігурації рішення та проекту можуть визначати та використовувати запис із назвою "x64". Третій ddl для процесорної арки. (Ціль платформи - наполовину сторінка властивостей збірки) - це той, який недоступний
— StingyJack

9

Моє рішення те саме, що вже згадувалося раніше: Видалити -> Додати існуючий проект

Але це рішення передбачає, що посилання між проектами зникають

Щоб уникнути повторного додавання посилань: і у випадку, якщо ви використовуєте систему контролю версій, таку як GIT або TFS, або що завгодно, можна досягти мети за допомогою таких кроків:

  1. Переконайтеся, що всі зміни здійснено / зареєстровано перед операцією

  2. Пройдіть усі проекти, вилучивши їх із рішення та додавши вже існуючі

  3. Зверніть увагу, що файл .sln змінився

  4. Зберігайте новий файл .sln, але скасуйте зміни у всіх файлах .cspoj за допомогою системи контролю версій



5

Візуальна студія 2008, це може бути тому, що 64-розрядний компілятор не був би встановлений.

Панель управління -> Програми та функції -> Microsoft Visual Studio 2008 professional -> [подвійне клацання]

У діалоговому вікні Visual Studio

Далі -> Додавання / видалення функцій -> (Під) Visual C ++ -> (виберіть) компілятор x64 та Інструменти


4

Проблема існує і в VS 2010; із запропонованих рішень: редагування конфігурації збірки, очищення, зміна / зміна цільової основи, НЕ працюють. Але розвантаження та перезавантаження проекту робить.


3

Гей, щойно виправив цей. Думав, це може допомогти. Швидше за все, ви не встановили відповідні компілятори разом із візуальною студією. Це сталося зі мною сьогодні - за замовчуванням інсталятор VS 2008 не встановлює компілятор x64 C ++.

Якщо у вас SP1, видаліть його перед зміною інсталяції VS. Завершивши, встановіть SP1 ще раз.


3

У мене був дивний, який, можливо, варто задокументувати серед інших можливостей тут ..

Я додав спільний проект до свого рішення із кодом, який використовувався у двох-трьох інших проектах. Як ви знаєте - спільні проекти - це просто код, а не насправді проект у традиційному розумінні .. Ви не можете «побудувати» спільний проект, це просто код, який вбудовується в інші проекти, а потім будується там.

Але якимось чином мій файл рішення був оновлений так, ніби спільний проект - це власне, що потребує побудови. Тоді я здогадуюсь, що в будь-який час, коли я намагався побудувати, і я не змінив код у спільному проекті, тоді він зрозумів, що "нічого не змінилося, пропустіть ці збірки"

Я знайшов спільний проект у solution.slnфайлі, наприклад:

Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Api.Common", "Api.Common\Api.Common.shproj", "{EC580471-D78A-4509-AC46-BD565553AD60}"

..що добре. Що не добре, так це те, що цей проект також з’явився GlobalSection(ProjectConfigurationPlatforms) = postSolutionподібним чином:

    {EC580471-D78A-4509-AC46-BD565553AD60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
    {EC580471-D78A-4509-AC46-BD565553AD60}.Debug|Any CPU.Build.0 = Debug|Any CPU
    {EC580471-D78A-4509-AC46-BD565553AD60}.Release|Any CPU.ActiveCfg = Release|Any CPU
    {EC580471-D78A-4509-AC46-BD565553AD60}.Release|Any CPU.Build.0 = Release|Any CPU

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


Чудово! Це було все! Я видалив кожен рядок із файлу .sln, який починався з рядка, на якому було написано лише "Глобальний", і видалив усі рядки до "EndGlobal". Потім знову спрацювало.
— Тед,

Коли я їх видалив, вони були додані автоматично автоматично, коли я будував рішення, однак вони повернулися з усіма чотирма записами, встановленими на рівні Налагодження | Будь-який процесор. Але це вирішило мою проблему.
— EspressoBeans

2

Перейдіть до меню збірки та виберіть "менеджер конфігурацій". Це покаже, які проекти налаштовано на вбудовування у вибрану вами конфігурацію.


2

У мене подібне траплялося зі мною. Я не впевнений, у чому проблема, але це не дозволить очистити , побудувати , відновити тощо. Я працюю в Visual Studio 2017 і хотів netstandard2.0зібрати. Проблема для мене полягала в тому, що якимось чином тип проекту був неправильним, можливо, я почав із netcoreappбібліотеки класів, щось подібне, застрягло у файлі рішення , я не пригадую. У будь-якому випадку, я зробив резервну копію проекту, створив новий netstandardпроект бібліотеки класів і врахував резервні копії, і це мені це виправило. HTH хтось.


2
  1. Закрити візуальну студію
  2. Відкрийте файл sln за допомогою блокнота
  3. видалити всі речі, подібні до цього: {B546C55D-9321-4FC0-B25C-46844222BEBE}. Виправлення помилок з підробками | x86.ActiveCfg = Налагодження з підробками | x86 (їх буде купа)

4.зберегти файл 5.відкрити візуальну студію і все краще


2
Чому це допомагає? Додайте пояснення та будьте якомога докладнішими, щоб майбутні читачі могли допомогти зрозуміти, чому вам потрібно було зробити ці кроки.

2

я оновився до 15.9.11, ... після деяких збірок та сама проблема: більшість проектів пропускаються (які будуються секунду тому без проблем). Вивантаження / перезавантаження рішення завжди допомагає в моєму випадку, але це повториться найближчим часом.

Я поняття не маю, чому ... окрім великої помилки у VS2017

Я перевірив диспетчер конфігурацій, усі галочки встановлені для побудови.

Можливо, це пов’язано з пакунками nuget, але це лише здогадки

Рішення має лише c ++ / vcxproj, немає csproj. 64 та 32 встановлені обидва


2

Перше, що вам потрібно зробити, це діагностувати, чому збірка пропускає проекти. Отже, щоб отримати детальний результат побудови, змініть деталізацію на detailedнаступне місце в Visual Studio.

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


7
На жаль, налаштування багатослів’я не допомагають. Вихідні дані все ще говорять лише про пропущений проект, не пояснюючи чому.
— PaulG

1

Маючи ту саму проблему, з'ясував, що налаштування проекту було для процесора Itanium, змінивши його на Intel, це виправило.


1

Виникла така сама проблема з VS2005, усі конфігурації були правильними. Це навіть пропускало команду Clean project.

Нарешті Розвантаження / Перезавантаження зробили магію.


1

Клацніть правою кнопкою миші на Рішення у вашому провіднику рішень, а потім натисніть Властивість внизу меню. У вікнах властивостей клацніть на Властивості конфігурації -> Конфігурація на лівій панелі, ви побачите список проектів на правій панелі, переконайтеся, що прапорець Збірка встановлено у спливаючому вікні.


1

Якщо ваше рішення містить файл проекту NuGet (* .nuproj), спробуйте його вивантажити, а потім відновити рішення.

Це спрацювало для мене після того, як жодне з перерахованих вище не спрацювало.


0

Я виявляю, що іноді, коли у вас є цільова платформа, встановлена ​​так, що дозволяє говорити x86 у вашому рішенні, а у ваших проектах проект насправді не завжди його вибирав.

Для подвійної перевірки перейдіть до властивостей проекту та перевірте, чи можете ви вибрати цю платформу в налаштуваннях Build-> Platform, якщо не можете, тоді вам потрібно буде перейти до диспетчера конфігурацій та створити цю конфігурацію.


0

У мене була проблема з деякими проектами Windows CE на новому ПК. З'явилося, що "Вивантажити проект" та "Перезавантажити проект", щоб вирішити проблему, але насправді Visual Studio просто перейшов на іншу платформу і створив її.

Виявилося, що, хоча моя платформа WinCE була показана як активна платформа, Visual Studio її "насправді" не бачила. Рішенням було перевстановити WinCE SDK за допомогою привілеїв адміністратора :

  • Переконайтесь, що Visual Studio 2008 не запущений.
  • Відкрийте “Командний рядок Visual Studio 2008” як адміністратор. У Windows 7 просто клацніть правою кнопкою миші ярлик і виберіть опцію «Запустити від імені адміністратора».
  • Введіть таку команду: msiexec /log SDKInstallLog.txt /package <the path to your .msi file>
  • На запитання, чи хочете ви виконати власну або повну вибірку встановлення, та доручити програмі встановлення пропустити встановлення документації (у моєму випадку цей крок не був необхідним; насправді я просто попросив його "відремонтувати" існуючу установку. )
  • Встановити

0

VS 2008 пропустить цілі x64, якщо у вас не встановлений компілятор x64. VS 2008 за замовчуванням не працює. Якась дух, штука.


0

У мене була дуже схожа проблема після генерації проекту з декомпілятора від Telerik, а потім спроби перекомпілювати його. Проект пропускався щоразу, коли я намагався його відбудувати. Спробував багато наведених вище пропозицій, але для мене це був .NET Framework, вибраний у властивостях проекту.

Клацніть правою кнопкою миші проект у файлі рішення, виберіть властивості, вкладку програми, змініть цільову структуру з 4.0 на 3.5.

Потім відновіть, і я отримав купу помилок, у яких відсутні посилання на збірки, що має сенс, оскільки я ще не додав посилання на них.


0

Я оновлюю одне невелике оновлення Visual Studio 2017, а потім інсталятор нагадує мені перезапустити комп’ютер, але я не перезапустився. Коли я будую свій проект або рішення у Visual Studio 2017, я зустрічаю ту саму вищезазначену проблему. ключ, тому я перезавантажую комп’ютер, я це зробив.:>


0

У мене була ця проблема у Visual Studio 2017 15.9.4, і після деякого пошуку та використання часу я виявив, що у моєму рішенні файл .csproj одного з проектів пошкодився після об’єднання в TFS. (Я міг будувати інші проекти, вивантажуючи проблемний проект із рішення). Як я вирішив свою проблему, так це те, що я порівняв файл .csproj до та після злиття та виправив це. І під виправленням я маю на увазі, оскільки тип мого власного проекту був .netStandard, я видалив непотрібні рядки, включаючи Configuration PropertyGroup , усі та інші у новому файлі .csproj, щоб зробити його схожим на попередню версію в стилі .netstandard.


0

У мене була подібна проблема, у мене був один проект, який з якихось причин не міг завантажити провідник рішень. Коли я завантажив цей проект, це спрацювало як шарм.


0

Я щойно потрапив у цю неприємність:

Оновив VS 2017 до останньої версії 15.9.11, і деякі мої проекти були оновлені до .net core 2.2. Спочатку я завантажив усі проекти, які пробував будувати / чистити / відбудовувати, і все було пропущено. Щоб вирішити проблему, виконайте наведені нижче дії.

  1. Я розвантажив кожен проект і перезавантажив їх.
  2. Закрив усі екземпляри VS і відкрив VS як адміністратор (клацніть правою кнопкою миші ярлик і виберіть опцію «Запустити як адміністратор»)

Ось і все було знову в дії, і я зміг успішно будувати всі проекти.


0

Візуальна студія 2017

Після додавання конфігурації в Configuration Manger

Клацніть правою кнопкою миші на Проект -> Лише проект -> Тільки побудувати / Лише відновити / Лише очистити

якщо всі інші налаштування правильні.


0

Випуск: Відновлення, Побудова, Очищення пропускав усі мої проекти, крім двох з них.

Рішення, які для мене не працювали:

  1. Налаштування конфігурації рішення були належними, тому жодні зміни в них не допомогли.

  2. Розвантаження та перезавантаження не спрацювали.

Причина виникнення:

Це відбувалося тому, що цільова платформа .NET була вищою (4.7) для цих 2 проектів, але нижчою для інших проектів. Спочатку з’явилося запит із проханням встановити .NET 4.7, що я і зробив, але виявилось, що він не зміг розпізнати, що він встановлений без перезапуску машини.

Працюючі рішення:

  1. Перезапуск моєї машини зробив трюк. Після перезапуску він правильно визнав, що встановлено .NET 4.7.
  2. Крім того, зниження рівня цільової структури проекту, клацнувши правою кнопкою миші на проекті -> Властивості -> Застосування -> Цільова структура та встановивши його так само, як інші проекти, які пропускали, також вирішило проблему.

Я рекомендую встановити останню версію .NET Framework та перезапустити машину, щоб уникнути подальших проблем.


0

Він буде пропускати збірки на будь-яких проектах, які мають залежні проекти, які не вдалося побудувати.

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