Почему этот скрипт MSBuild не устанавливает свойство так, как я ожидаю? - PullRequest
5 голосов
/ 26 января 2010

Я пытаюсь установить значение по умолчанию для свойства MSBuild. Скажем, я начинаю с этого:

<Choose>
    <When Condition="..something..">
        <PropertyGroup>
            ...
            <MySetting>true</MySetting>
        <PropertyGroup>
    </When>
    ...
</Choose>

Если условие не соответствует действительности, тогда MySetting будет ''. Так не должно ли это установить его в ложь?

<PropertyGroup>
    <MySetting Condition="'$(MySetting)'==''">false</MySetting>
</PropertyGroup>

Позже я бы хотел использовать MySetting в условных выражениях без необходимости проверки на == 'true', например:

<PropertyGroup Condition="$(MySetting)">
    ...
</PropertyGroup>

Тем не менее, когда я загружаю этот проект в Visual Studio, он жалуется, что указанное условие "$ (MySetting)" оценивается как "" вместо логического значения.

Таким образом, похоже, что либо мое условие, которое проверяет наличие '', чтобы присвоить свойству значение false, неверно. Что я делаю не так?

Ответы [ 2 ]

6 голосов
/ 26 января 2010

В MSBuild вы имеете дело со строками, поэтому вы получаете '' вместо false ... если вы хотите установить по умолчанию 'false' и переопределить через командную строку, просто объявите группу свойств выше ваш существующий блок условий в скрипте:

<PropertyGroup>
    <MySetting>false</MySetting>
</PropertyGroup>

Ваш блок условий ниже может установить для него значение true, или вы также можете установить его через командную строку, например:

MSBuild.exe MyMSBuildFile.csproj /p:MySetting=true
3 голосов
/ 26 января 2010

Если вы хотите объявить значения по умолчанию для свойств лучше, тогда используйте Chose, чтобы сделать это для свойства как:

<PropertyGroup>
    <MySetting Condition=" '$(MySetting)'=='' ">true</MySetting>
</PropertyGroup>

Также для условий всегда переносите левую и правую стороны в '', даже если вы имеете дело с значениями bool. Поэтому измените свою вторую группу свойств так:

<PropertyGroup Condition=" '$(MySetting)'=='true' ">
</PropertyGroup>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...