Функции свойств MSBuild 4.0 не могут получить доступ к свойствам внутри них - PullRequest
0 голосов
/ 21 сентября 2011

Является ли ограничение функций свойств MSBuild 4.0 тем, что я не могу получить доступ к свойству изнутри одного?

Вот пример, который отлично работает:

<PropertyGroup>
  <PartialConnection>$(TargetConnectionString.Substring( 0 + 12))</PartialConnection>
</PropertyGroup>

Вот еще один пример того, что сопли работают. (Я заменяю 0 другим свойством)

<PropertyGroup>
  <LocationOfDataSource>$(TargetConnectionString.IndexOf("Data Source="))</LocationOfDataSource>
</PropertyGroup>
<Message Importance="high" Text="Location is = $(LocationOfDataSource)"/>
<PropertyGroup>
  <PartialConnection>$(TargetConnectionString.Substring( $(LocationOfDataSource) + 12))</PartialConnection>
</PropertyGroup>

это выводит

Местоположение = 0
Ошибка MSB4184: выражение "Источник данных = MySQLServer; Интегрированная безопасность = Истина; Пул = Ложь". Подстрока (0 + 12) "не может быть оценено. Входная строка была в неправильном формате.

Я взял вывод и подключился к консольному приложению, и оно работает просто отлично. Я пробовал несколько вариантов, и они всегда терпят неудачу, когда я помещаю свойство в функцию свойства. (Я даже дважды пытался получить доступ к одному и тому же свойству в функции моего свойства, и это тоже не удалось.)

Функции свойств не поддерживают доступ к свойствам?

1 Ответ

2 голосов
/ 21 сентября 2011

Я думаю, моя проблема заключалась в том, что математика пришла бесплатно.

Мне нужно было сделать такую ​​вещь:

<PropertyGroup>
  <LocationOfDataSource>$(TargetConnectionString.IndexOf("Data Source="))</LocationOfDataSource>
  <LenthOfDataSourceString>12</LenthOfDataSourceString>
  <LocationOfEndOfDataSourceString>$([MSBuild]::Add($(LocationOfDataSource), $(LenthOfDataSourceString)))</LocationOfEndOfDataSourceString>
  <PartialConnectionString>$(TargetConnectionString.Substring($(LocationOfEndOfDataSourceString)))</PartialConnectionString>
</PropertyGroup>

Обратите внимание, что я добавляю, используя Add ($ (Свойство), $ (Свойство)) в этой версии.

Кажется, сейчас работает.

...