Почему Visual Studio не сохраняет новый лист свойств?
Всем привет!
Во-первых, это не так уж и важно, я могу решить проблему ручным редактированием конфигурационных файлов, но мне любопытно, почему это происходит. Так что если вы действительно не хотите читать весь мой роман, Не тратьте свое время :) .
В настоящее время у меня есть решение, содержащее 2 проекта C# и 1, написанный на C++/CLI. Все проекты ориентированы на версию .NET 4.5, и я использую Visual Studio Express 2012 для рабочего стола Windows.
У меня есть небольшая проблема с проектом C++/CLI, который представляет собой проект-оболочку для библиотеки обработки изображений, использующей OpenCV. Я настроил зависимости библиотеки для OpenCV, используя листы свойств как для конфигурации выпуска, так и для отладки.
Когда я создал первый лист свойств, все было в порядке. Второй лист свойств был создан частично. Независимо от того, что я сделал в Visual Studio, он не сохранил свойство дополнительных зависимостей. Мне пришлось вручную отредактировать файл .props и перезапустить Visual Studio.
Третий лист собственности даже не был сохранен. Ну, по крайней мере, файл .props был создан с некоторым базовым содержимым, но ни одна из моих настроек не была сохранена.
В каждом случае я нажимал кнопку Добавить новый лист свойств проекта в Диспетчере свойств. Не похоже, чтобы я делал что-то особенное между каждым созданием листа, просто компилируя решение. Я не вижу ошибок в Visual Studio, когда нажимаю кнопку Применить или ОК в свойствах листа свойств, однако компоновщик не распознал библиотеки, пока я не отредактировал файл .props в блокноте.
Теперь вот эти файлы и сообщения об ошибках:
Сообщение об ошибке компилятора(что нормально, так как файл .props не сохранил информацию о дополнительном каталоге include):
Error 1 error C1083: Cannot open include file: 'Feature.h': No such file or directory C:\Users\...\Documents\Visual Studio 2012\Projects\Solution1\Project3\Image.cpp 8 1 Project3
Я не знаю, поможет ли это, но это мои текущие файлы .props:
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup> <LibraryPath>C:\opencv\build\x86\vc11\lib;$(LibraryPath)</LibraryPath> </PropertyGroup> <ItemDefinitionGroup> <ClCompile> <AdditionalIncludeDirectories>C:\opencv\build\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> <Link> <AdditionalLibraryDirectories>C:\opencv\build\x86\vc11\bin;C:\opencv\build\x86\vc11\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalDependencies>opencv_calib3d2410d.lib;opencv_contrib2410d.lib;opencv_core2410d.lib;opencv_features2d2410d.lib;opencv_flann2410d.lib;opencv_gpu2410d.lib;opencv_highgui2410d.lib;opencv_imgproc2410d.lib;opencv_legacy2410d.lib;opencv_ml2410d.lib;opencv_nonfree2410d.lib;opencv_objdetect2410d.lib;opencv_ocl2410d.lib;opencv_photo2410d.lib;opencv_stitching2410d.lib;opencv_superres2410d.lib;opencv_ts2410d.lib;opencv_video2410d.lib;opencv_videostab2410d.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <ProjectReference> <UseLibraryDependencyInputs>true</UseLibraryDependencyInputs> </ProjectReference> </ItemDefinitionGroup> <ItemGroup /> </Project>
Третий "пустой" файл .props:
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup /> <ItemDefinitionGroup /> <ItemGroup /> </Project>
Ответ:
Ну а ответ таков, что проблема была между стулом и экраном компьютера Smile | :) .
После редактирования свойств для этого конкретного листа свойств вы должны сохранить его с помощью правая кнопка мышиИнг на нем и выбор Сохранить "NameOfPropertySheet"
Я совсем онемел. Кажется, что в первый раз я щелкнул меню или нажал Ctrl+S, но позже забыл об этом. Честно говоря, это был первый раз, когда я использовал листы свойств Visual Studio, и почему-то я предположил, что нажатие кнопки OK сохраняет их.
В любом случае, все, что имеет значение, все работает так, как должно.