подробный ответ о том, как получить параметр даже в событиях после сборки через $ (RuntimeLibrary) в качестве примера. В VS 2015 я должен написать <PropertyGroup> <RuntimeLibrary> @ (ClCompile -> '% (RuntimeLibrary)' -> Distinct ()) </ RuntimeLibrary> </ PropertyGroup>, чтобы получить только один результат ItemGroup

у свои собственные сценарии сборки MS, которые импортирую в файл проекта (* .vcxproj)

Я хотел бы выполнить задачу условно в зависимости от динамического использования среды выполнения C. Я попробовал следующее:

Condition = " '$(RuntimeLibrary)' == 'MultiThreadedDLL' "

Но $ (RunitmeLibrary) - это не свойство, а аргумент ClCompile.

Есть ли другой способ написать условие, которое проверяет, нравится ли среда выполнения динамически или статически?

С уважением

Ответы на вопрос(1)

Решение Вопроса

которое вы ищете, - это метаданные группы элементов ClCompile. Использовать это:

Condition=" '%(ClCompile.RuntimeLibrary)' == 'MultiThreadedDll' "

Я добавил это в конец vcxproj, чтобы увидеть текущую настройку:

 <Target Name="BeforeClCompile">
    <Message Text="BeforeCompile: RuntimeLibrary=[%(ClCompile.RuntimeLibrary)]" Importance="high" />
 </Target>
 42tg07 февр. 2017 г., 15:35
Чтобы завершить этот ответ, который ведет в правильном направленииВот подробный ответ о том, как получить параметр даже в событиях после сборки через $ (RuntimeLibrary) в качестве примера. В VS 2015 я должен написать <PropertyGroup> <RuntimeLibrary> @ (ClCompile -> '% (RuntimeLibrary)' -> Distinct ()) </ RuntimeLibrary> </ PropertyGroup>, чтобы получить только один результат ItemGroup
 Mikhail20 дек. 2014 г., 21:40
@niks Есть ли способ определить это свойство за пределами цели? Когда я делаю это,%(...) не оценивается, остается той же самой строкой, начинающейся со знака процента.
 niks19 янв. 2011 г., 08:54
Спасибо, это именно то, что я искал. За исключением того, что доступ к% (ClCompile.RuntimeLibrary) в Условии кажется незаконным. (Код ошибки MSB4191: ссылка на пользовательские метаданные «RuntimeLibrary» в позиции 1 недопустима в этом условии «% (ClCompile.RuntimeLibrary)» == «MultiThreadedDLL». Я обошел эту проблему, создав свойство, в котором хранится значение этих пользовательских метаданных и используйте свойство в условии. <PropertyGroup> <RuntimeLibrary>% (ClCompile.RuntimeLibrary) </ RuntimeLibrary> </ Property>

Ваш ответ на вопрос