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


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.