Autor Téma: MSBuild a podmínka na obsah řetězce  (Přečteno 271 krát)

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1290
  • Karma: 28
    • Pepak.net
MSBuild a podmínka na obsah řetězce
« kdy: 04-08-2017, 11:55:42 »
Ahoj,

dokázal by mi prosím někdo poradit s MSBuild? Chci v <PropertyGroup> udělat podmínku, že proměnná obsahuje podřetězec. Podle dokumentací, které jsem našel, by mělo fungovat něco jako:

Kód: [Vybrat]
<PropertyGroup Condition="$(DCC_Defines.Contains('xxx'))">
  ... cokoliv ...
</PropertyGroup>

Mě to bohužel nefunguje (MSBuild v3.5): Ve variantě výše dostávám chybu "MSB4092: An unexpected token ")" was found at character position 29 in condition "$(DCC_Define.Contains('xxx'))". A netuším, co se mi tím MSBuild snaží říct, protože ta závorka tam podle mě být musí. Asi tak nejdál se dostanu s podmínkou:

Kód: [Vybrat]
<PropertyGroup Condition="$(DCC_Define.Contains('xxx')==''">
  ... cokoliv ...
</PropertyGroup>

která má ale z mého pohledu dva hrubé nedostatky:

1) Jsou tam nevyvážené závorky, což mi připadá, že musí být špatně, a

2) netuším, jak z toho poznat, jestli podmínka splněna byla nebo ne, protože ten prázdný řetězec jako výsledek dostanu pro jakékoliv hledané řetězce, existující i neexistující.

Kde dělám chybu?

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1796
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:MSBuild a podmínka na obsah řetězce
« Odpověď #1 kdy: 04-08-2017, 12:19:54 »
Mě to bohužel nefunguje (MSBuild v3.5): Ve variantě výše dostávám chybu "MSB4092: An unexpected token ")" was found at character position 29 in condition "$(DCC_Define.Contains('xxx'))". A netuším, co se mi tím MSBuild snaží říct, protože ta závorka tam podle mě být musí. Asi tak nejdál se dostanu s podmínkou:
Tak Contains jsem jeste nepotreboval, ale rekl bych, ze z toho, co ti pise za chybu a ze Contains() je metoda nejakeho stringu a DCC_Define ma byt pravdepodobne nejaka promenna, tak bych tu syntaxi videl:
Kód: [Vybrat]
$(DCC_Define).Contains('xxx')

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1290
  • Karma: 28
    • Pepak.net
Re:MSBuild a podmínka na obsah řetězce
« Odpověď #2 kdy: 04-08-2017, 12:47:35 »
To já bych viděl taky, taky jsem ji párkrát zkoušel, ale nefunguje - stěžuje si na MSB4092: An unexpected token "." was found at character position ... Totéž ve variantě, kdy kolem $(DCC_Define) jsou apostrofy.
« Poslední změna: 04-08-2017, 12:49:19 od pepak »

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1796
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:MSBuild a podmínka na obsah řetězce
« Odpověď #3 kdy: 04-08-2017, 13:43:58 »
To já bych viděl taky, taky jsem ji párkrát zkoušel, ale nefunguje - stěžuje si na MSB4092: An unexpected token "." was found at character position ... Totéž ve variantě, kdy kolem $(DCC_Define) jsou apostrofy.
Tak asi ne, podle toho co lze dohledat: jediny rozdil oproti tomu co mas, tak uvadeji obracene apostrofy https://blogs.msdn.microsoft.com/msbuild/2010/04/02/msbuild-property-functions/

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1796
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:MSBuild a podmínka na obsah řetězce
« Odpověď #4 kdy: 04-08-2017, 13:44:45 »
Excellent
Rated 2 times
Jo a jeste ze je to od MSBuild 4...

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1290
  • Karma: 28
    • Pepak.net
Re:MSBuild a podmínka na obsah řetězce
« Odpověď #5 kdy: 04-08-2017, 14:08:59 »
Hmm, tak to mám asi s Delphami docela smůlu :-(

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1796
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:MSBuild a podmínka na obsah řetězce
« Odpověď #6 kdy: 04-08-2017, 14:14:51 »
Hmm, tak to mám asi s Delphami docela smůlu :-(
Ja s tim delam jen v dotShitu

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1796
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:MSBuild a podmínka na obsah řetězce
« Odpověď #7 kdy: 04-08-2017, 14:17:59 »
Hmm, tak to mám asi s Delphami docela smůlu :-(
Tohle jsi videl: https://stackoverflow.com/questions/3289538/is-there-any-msbuild-task-to-check-if-a-string-contains-another-string-similar?. Tam pise, ze na to ve verzich 3.x lze pouzit  Tigris MsBuild Tasks a regex. Ale jakou verzi MS Buildu pouziva Delphi nebo jestli jim s tim normalne bezi build tasky, to netusim

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):