msbuild: установите определенный препроцессор #define в командной строке

Я сделал домашнюю работу и, похоже, лучший подход к реализации отзыва заключается в использовании jti (id on Jtw) и черного списка отозванного идентификатора (который будет очищен, когда токен истёк). Это сделает JTW stateful только для части черного списка.

21
задан graham.reeds 22 June 2010 в 16:27
поделиться

5 ответов

Ответ: ВЫ не МОЖЕТЕ

-2
ответ дан 29 November 2019 в 20:17
поделиться

Проекты C++ (и решения) не (уже?) интегрированный в среде MSBuild. Как часть процесса сборки, называют задачу VCBuild, который является просто оберткой приблизительно vcbuild.exe .

Вы могли:

  • создают определенную конфигурацию для Вашего решения, где ACTIVATE=1 был бы определен, и компилировать его с devenv.exe переключатель/ProjectConfig).
  • создают Ваш собственный конечный файл для обертывания собственного вызова к задача VCBuild (см. параметр Переопределения)...
  • <забастовка> использование vcbuild.exe вместо msbuild.exe. (vcbuild.exe, кажется, не имеет эквивалент параметра Переопределения).

Примечание, что Ваше решение не работало бы на проекты C# также, если Вы не настроили свои файлы проекта немного. Для ссылки вот то, как я сделал бы это:

  • Добавляют следующий код перед вызовом к <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />:
<PropertyGroup Condition=" '$(MyConstants)' != '' ">
  <DefineConstants>$(DefineConstants);$(MyConstants)</DefineConstants>
</PropertyGroup>
  • Вызов MSBuild как это:
msbuild /p:MyConstants="ACTIVATE=1"
9
ответ дан 29 November 2019 в 20:17
поделиться

Я думаю, что Вы хотите:

/p:DefineConstants=ACTIVATE
8
ответ дан 29 November 2019 в 20:17
поделиться

Это должно, вероятно, быть:

#ifdef ACTIVATE
#   pragma message( "Activated" )
#else
#   pragma message( "Not Activated")
#endif
-2
ответ дан 29 November 2019 в 20:17
поделиться

Я должен был сделать, это также - должно было смочь создать две различных версии моего приложения и хотело смочь написать сценарий сборки с помощью VCBUILD. VCBUILD действительно имеет переключатель командной строки переопределения/, но я не уверен, что он может использоваться для изменения #define символов, которые могут затем быть протестированы с помощью #if условную компиляцию.

бегунок решения I с должен был записать простую утилиту для создания заголовочного файла, что #defined символ на основе состояния переменной среды и выполняют утилиту от шага перед сборкой. До каждого выполнения шага VCBUILD сценарий устанавливает переменную среды и "касается" файла в приложении, чтобы гарантировать, что шаг перед сборкой выполняется.

Да, это - ужасный взлом, но было лучше, чтобы я мог придумать!

-1
ответ дан 29 November 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: