msbuild, определяющий условные символы компиляции

Возможно, я просто ослеп, но есть ли командная строка для указания условных символов компиляции в MSBUILD?

У меня в настоящее время эта строка в моем buildscript:

SET MSBUILD=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe SET CONFIG=Debug %MSBUILD% /p:Configuration=%CONFIG% /p:OutputPath=..\..\output source\MyProject\MyProject.csproj 

И я хотел бы добавить условие. В Visual Studio я могу просто перейти в Project Properties => Build => Условные символы компиляции, но я не видел эту опцию для msbuild?

Bonus Karma, если вы знаете, могу ли я полностью переопределить все символы, уже указанные в файлах .csproj, чтобы убедиться, что включены только условия из моего Buildscript.

    Вы видели это ? (большая часть информации находится в предпоследнем сообщении)

     /p:DefineConstants="MYSYMBOL1;MYSYMBOL2" 

    Мне пришлось использовать пространство вместо точки с запятой a la this post by Björn Lasar: http://www.linqinpark.net/2009/01/13/MSBuildWithMultipleDefineConstants.aspx

    Обновление: блог исчез; извлекается через Интернет-архив :

    Недавно мне пришлось использовать MSBuild для автоматизации некоторых сборок. Мне также пришлось настроить некоторые препроцессоры, основанные на конфигурации. Обычно это делается с помощью Аргумента, подобного этому

     "/p:DefineConstants=MY_PREPROC_FLAG" 

    Здесь ничего особенного, так как в Интернете достаточно комментариев. Сегодня мне понадобился еще один флаг, и я использовал синтаксис командной строки, подобный тому, как я это знал из IDE:

     "/p:DefineConstants=MY_PREPROC_FLAG;YET_ANOTHER_FLAG" 

    но это не сработало.

    Поэтому дело в том, что если вы хотите поддерживать несколько определений в проекте с помощью командной строки, вам придется отделить их простыми пространствами …

     "/p:DefineConstants=MY_PREPROC_FLAG YET_ANOTHER_FLAG" 

    и он будет добавлен в раздел (разделенный точкой с запятой) Определяет из среды IDE. Полезно знать, я думаю …

    То, что сказано в ответах, справедливо для кода C# , а также для кода C# кода кода “codebehind”. Для веб-проектов ASP.NET , если вы хотите сделать условную компиляцию на страницах ASPX, она работает немного иначе, чтобы условно отобразить HTML на странице (обратите внимание, что я удалил MasterPageFile="..." AutoEventWireup="true" CodeBehind="..." Inherits="..." который вы обычно используете в объявлении <%@ ... %> ):

     <%@ Page Title="MyPage" Language="C#" CompilerOptions="/d:DebugSym1;DebugSym2" %> <% #if DebugSym1 %> 

    Section1

    <% #else %>

    (Section 1 skipped)

    <% #endif %> <% #if DebugSym2 %>

    Section2

    <% #else %>

    (Section 2 skipped)

    <% #endif %>
    2 <%@ Page Title="MyPage" Language="C#" CompilerOptions="/d:DebugSym1;DebugSym2" %> <% #if DebugSym1 %>

    Section1

    <% #else %>

    (Section 1 skipped)

    <% #endif %> <% #if DebugSym2 %>

    Section2

    <% #else %>

    (Section 2 skipped)

    <% #endif %>

    Если вы удалите DebugSym1 или DebugSym2 из CompilerOptions , тогда будет DebugSym1 DebugSym2 часть соответствующего оператора #if .

    Я думал, что это стоит упомянуть для полноты этой темы и может сэкономить ваше время. Подробнее вы можете найти в этой статье , если вам интересно.

    /p:DefineConstants – это все или ничего.

    Если вы просто хотите отключить символ трассировки, вы не можете просто сделать это с помощью: msbuild /p:DefineTrace=false

    Вы должны определить что-то, чтобы переопределить все уже определенные символы: msbuild /p:DefineConstants="RANDOM-SYMBOL"

    Спасибо, Майкл Стам, укажите это скрытое правило, я также написал блог об этом

    Interesting Posts

    Конструктор пользовательского вида Android

    Какие методы компонента Swing являются streamобезопасными?

    Angular2 SEO – Как сделать угловое приложение с возможностью сканирования 2

    Поиск в Windows 7 не работает в папке Google Диска

    Не удается найти или открыть файл PDB в Visual Studio C ++ 2010

    Документация-генератор для Objective-C?

    Можно ли передать лицензию Windows XP на другой компьютер и перейти на Windows 7?

    Как разбить NSTimeInterval на год, месяцы, дни, часы, минуты и секунды на iPhone?

    Наложение UIImage с цветом?

    Как вы определяете формат даты, используемый при маршалах JAXB xsd: dateTime?

    Как использовать розничный лицензионный ключ для Windows 7 Professional для обновления установленной машины Windows 7 Home Premium

    Почему я не могу объявить методы C # виртуальными и статическими?

    Таймер с высоким разрешением в C #

    Отправка уведомления из службы на Android

    Почему scanf () вызывает бесконечный цикл в этом коде?

    Давайте будем гением компьютера.