Условие требует, чтобы ANSI_VERSION было свойством MSBuild.Они отличаются от определений препроцессора C ++ (которые являются входными данными, используемыми при компиляции файла, но не используются MSBUILD при тестировании файлов для компиляции - строго говоря, они используются препроцессором, но являются частью шага компиляции с точки msbuild).зрения)
Вы можете установить ANSI_VERSION в качестве свойства MSBUILD в файле проекта: -
Например: -
<PropertyGroup>
<ANSI_VERSION>no</ANSI_VERSION>
<ANSI_VERSION Condition="'$(Configuration)' == 'ANSI_DEBUG'">yes</ANSI_VERSION>
<ANSI_VERSION Condition="'$(Configuration)' == 'ANSI_RELEASE'">yes</ANSI_VERSION>
</PropertyGroup>
Приведенное выше значение по умолчанию ANSI_VERSION равно no ипереопределяет «да», когда условие выполнено, но вы также можете по очереди протестировать каждую возможную конфигурацию, если хотите.
Условия также можно объединить в одно условие с или, если вы предпочитаете.
Лично я бы использовал true / false, а не yes / no.С true false вы можете просто проверить свойство как логическое значение, а не сравнивать со строкой (хотя, возможно, это также работает с да / нет - но я не пробовал)
Изменить в ответ на вопрос: вышеусловно исключает файлы из сборки, исключая их из отображения немного по-другому, так как для этого потребуется пользовательский интерфейс для повторного анализа проектов для обновления списка файлов.Может оказаться, что для вас лучше работает создание фильтра в проекте для этих файлов (т. Е. Щелкните правой кнопкой мыши проект в представлении решения и используйте Add-> New Filter).Затем условно используйте параметр ExcludeFromBuild, чтобы контролировать, какие конфигурации на самом деле их компилируют, вместо того, чтобы включать в CLCompile условия, что-то вроде: -
<ClCompile Include="SomeFile.cpp">
<ExcludedFromBuild Condition="'$(Configuration)'=='Debug'">true</ExcludedFromBuild>
</ClCompile>