Визуальная студия постоянно перестраивается и нарушается интеллектуальность - PullRequest
2 голосов
/ 18 июня 2019

Проблема

1) Visual studio постоянно перестраивает каждый проект независимо от изменений, внесенных в исходный код. 2) Intellisense также нарушен. Каждая команда с ошибками «Нет дополнительной информации» 3) Visual studio сообщает об ошибке E1696 не удается открыть исходный файл "CURRENTLYOPENSOURCEFILEINCAPS.CPP", несмотря на успешную сборку проекта в любом случае. Значок ошибки отличается от ошибок, которые вызывают сбой сборки.

Что я сделал

Я включил диагностический вывод. Для цели cmake с нулевой проверкой не удается найти generate.stamp.rule, который я проверял, существует до сборки и не удаляется и не регенерируется, а путь к файлу правильный. У отдельных проектов есть похожие файлы, которые существуют, но Visual Studio говорит, что они отсутствуют.

Я просмотрел много сообщений о переполнении стека, чтобы снова запустить intellisense, но ничего не работает. Все файлы, которые открываются с помощью обозревателя решений, имеют "(глобальный объем) на панели навигации, где раньше был путь к файлу.

Я построил с использованием msbuild, и там написано «Создание« x64 \ Debug \ ZERO_CHECK \ ZERO_CHECK.tlog \ unsuccessfulbuild », потому что было указано« AlwaysCreate »». Я не знаю, почему всегда указывается AlwaysCreate. Я читал, что это может произойти, если #include пытается включить вещи, которые не существуют, но я не понимаю, как он может скомпилироваться - в любом случае, это большая база кода, и если это было причиной, конечно, проверить предыдущие коммиты, где это не было проблемой, должны были это исправить - но не сделали.

У меня сборка вне исходного кода, поэтому я попытался удалить ее и заново запечатать все, чтобы очистить все переменные кэша.

Я пытался сбросить все настройки до заводских.

Я отключил одновременные сборки.

Я запускаю в режиме администратора.

Я удалил все в своем репозитории и собрал выходные данные и повторно клонировал и извлек прошлые коммиты до того, как это произошло.

Я пытался скопировать исходный код на другой диск и на разных уровнях глубины папки на диске.

Я дважды пытался удалить и переустановить visual studio.

Может подтвердить создание новых фиктивных проектов не имеет ни одной из 3 перечисленных проблем.

Я пробовал комбинацию удаления всего, сброса vs, переустановки vs, клонирования ранее работавшего коммита, cmaking, построения vs в админке, build против админа и до сих пор у него все 3 проблемы.

Первая точка отказа на диагностическом выходе

1>------ Up-To-Date check: Project: ZERO_CHECK.vcxproj, Configuration: Debug x64 ------
1>Project is not up-to-date: build input 'e:\blabla\blabuilddir\cmakefiles\66f04b81c84059a8a3158e97cbfec9b8\generate.stamp.rule' is missing.

Это не так.

Еще несколько выводов до принятия решения / выполнения вещи AlwaysCreate

>Done building target "_HandlePackageFileConflicts" in project "ALL_BUILD.vcxproj".
16>Target "ResolveAssemblyReferences" in file "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets":
16>  Added Item(s): 
16>      _ReferenceInstalledAssemblyDirectory=
16>          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0
16>          C:\Program Files (x86)\Windows Kits\10\References
16>  Set Property: ResolveAssemblyReferencesStateFile=x64\Debug\ALL_BUILD\ALL_BUILD.vcxprojAssemblyReference.cache
16>  Set Property: ResolveAssemblyReferencesSilent=false
16>  Set Property: ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch=Warning
16>  Set Property: FindDependenciesOfExternallyResolvedReferences=false
16>  Task "ResolveAssemblyReference" skipped, due to false condition; ('@(Reference)'!='' or '@(_ResolvedProjectReferencePaths)'!='' or '@(_ExplicitReference)' != '') was evaluated as (''!='' or ''!='' or '' != '').
16>Done building target "ResolveAssemblyReferences" in project "ALL_BUILD.vcxproj".
16>Target "GenerateBindingRedirects" skipped, due to false condition; ('$(AutoGenerateBindingRedirects)' == 'true' and '$(GenerateBindingRedirectsOutputType)' == 'true') was evaluated as ('' == 'true' and 'true' == 'true').
16>Target "_RemoveZipFileSuggestedRedirect" skipped, due to false condition; ('$(_TargetFrameworkVersionWithoutV)' >= '4.7.1' And '$(AllowZipFileRedirect)' != 'true') was evaluated as ('4.0' >= '4.7.1' And '' != 'true').
16>Target "GenerateBindingRedirectsUpdateAppConfig" skipped, due to false condition; ('$(AutoGenerateBindingRedirects)' == 'true' and '$(GenerateBindingRedirectsOutputType)' == 'true' and Exists('$(_GenerateBindingRedirectsIntermediateAppConfig)')) was evaluated as ('' == 'true' and 'true' == 'true' and Exists('x64\Debug\ALL_BUILD\ALL_BUILD.config')).
16>Target "ResolveComReferences" skipped, due to false condition; ('@(COMReference)'!='' or '@(COMFileReference)'!='') was evaluated as (''!='' or ''!='').
16>Target "AfterResolveReferences" in file "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets":
16>Done building target "AfterResolveReferences" in project "ALL_BUILD.vcxproj".
16>Target "ImplicitlyExpandDesignTimeFacades" skipped, due to false condition; ('$(ImplicitlyExpandDesignTimeFacades)' == 'true') was evaluated as ('' == 'true').
16>Target "ResolveTestReferences" skipped, due to false condition; ('@(Shadow)'!='') was evaluated as (''!='').
16>Target "ResolveReferences" in file "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets":
16>Done building target "ResolveReferences" in project "ALL_BUILD.vcxproj".
16>Target "PrepareForBuild" skipped. Previously built successfully.
16>Target "PrepareForBuild" skipped. Previously built successfully.
16>Target "InitializeBuildStatus" in file "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets":
16>  Task "ReadLinesFromFile"
16>    Task Parameter:File=x64\Debug\ALL_BUILD\ALL_BUILD.tlog\ALL_BUILD.lastbuildstate
16>    Output Item(s): 
16>        _ReadProjectStateLine=
16>            #TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.17763.0
16>            Debug|x64|E:\blaWork\bla\blaBuild-win64-vc15\|
16>  Done executing task "ReadLinesFromFile".
16>  Set Property: ProjectStateLine=#TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.17763.0
16>  Set Property: StateBuildType=Build
16>  Task "WriteLinesToFile"
16>    Task Parameter:Overwrite=True
16>    Task Parameter:File=x64\Debug\ALL_BUILD\ALL_BUILD.tlog\ALL_BUILD.lastbuildstate
16>    Task Parameter:
16>        Lines=
16>            #TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.17763.0
16>            Debug|x64|E:\blaWork\bla\blabuild-win64-vc15\|
16>  Done executing task "WriteLinesToFile".
16>  Task "Touch"
16>    Task Parameter:AlwaysCreate=True
16>    Task Parameter:Files=x64\Debug\ALL_BUILD\ALL_BUILD.tlog\unsuccessfulbuild
16>    Touching "x64\Debug\ALL_BUILD\ALL_BUILD.tlog\unsuccessfulbuild".
16>  Done executing task "Touch".
16>Done building target "InitializeBuildStatus" in project "ALL_BUILD.vcxproj".

1 Ответ

0 голосов
/ 19 июня 2019

Проблема, по-видимому, была вызвана хитрой реализацией чувствительности к регистру в Windows.

background Я работаю на разных платформах linux / windows, поэтому, когда я прочитал о чувствительности к регистру окон, я был взволнован и испытал его около двух недель назад.cmake больше не мог найти компилятор после того, как я включил чувствительность к регистру в папке репозитория, и у меня не было времени выяснить, почему, поэтому я переключил его обратно.Команда, которую я использовал, не была рекурсивной, поэтому я, должно быть, не отключил все папки, которые я включил, поэтому все еще сохранялась некоторая чувствительность к регистру.

Шаги, которые решили мою проблему:

  1. запуск Windows PowerShell в режиме администратора
  2. fsutil.exe file setCaseSensitiveInfo C:\folder disable
  3. Повтор накаждый уровень каталога от диска до самого глубокого файла исходного кода.

Должен быть рекурсивный флаг или что-то в этом роде, но если нет, то довольно просто перебирать папки в powershell, но меня не беспокоит получение правильного синтаксиса прямо сейчас.

подробнее о чувствительности к регистру окон здесь

...