TeamCityは、MSBuildステップで「/ property:」の代わりに「BuildParameters」を使用するように指示しています。どういう意味ですか?


80

CIビルドを実行するためのTeamCityサーバーのセットアップがあります。私はC#ソリューションを構築してテストし、いくつかのカスタムMSBuildタスクを実行しています。これらのタスクの1つは、ビルド出力に警告を出力することです...

MSBuildコマンドラインパラメーターには、「/ property:」または「/ p:」パラメーターが含まれています。代わりにビルドパラメータを使用してください。

これが何を意味するのか、それを削除する方法がわかりません。それはうまくグーグルしません(タイプミスの有無にかかわらず)。コマンドライン(を使用/verbosity:diagnostic)からタスクを実行しましたが、表示されないので、TeamCityメッセージだと思います。

MSBuildタスクは

<Target Name="InstallDb">
  <MakeDir Directories="$(DbPath)" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseDrop.sql" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseCreate.sql -v DbPath=&quot;$(DbPath)&quot;" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseProgrammability.sql" />
</Target>

そして、関連するTeamCityのステップ情報は

MSBuildバージョン:4.0
MSBuildツールバージョン:4.0
実行プラットフォーム:x64
ターゲット:InstallDb
コマンドラインパラメーター:/ property:DbPath =%env.DB_PATH%


5
@AnneTheAgileは、TeamCityシステムビルドパラメーターを追加するだけです。これは、あなたが言及した3種類のビルドパラメーターの1つです。'system。<name-of-my-build-parameter>'のように名前を付け、必要な値を指定します。TeamCityはそれを自動的にMSBuildに送信します。ビルドレポートでパラメータの値を確認できます。それらがすべてリストされるパラメータのタブがあります。
Anthony Mastrean 2012年

回答:


58

構成に変数のBuild Parameters下に追加する必要がProperties and environmentあります

`ここに画像の説明を入力してください

したがって、Build Stepfor MSBUildのコマンドラインパラメーターで、として指定されているプロパティをすべて削除し、/p:それぞれをBuild Parameters(上のスクリーンショット)に追加して、値を指定します。


5
@Anthony Mastreanうん-Build parameters are passed to a build. Build parameters can be of two types: system properties and environment variables. Environment variables are supported by any build runner, however system properties are only available for build runners with property notion. For example, Command line runner does not support properties.
manojlds

8
ありがとう!これは機能しましたが、実装/使用法を実際に理解するには、このドキュメントにアクセスする必要がありました。
Anthony Mastrean 2011年

2
チームシティのドキュメントから:構成パラメーターは、テンプレートから継承されたビルド構成の一部の設定をオーバーライドする方法を提供します。それらがビルドに渡されることはありません。
topwik 2011

8
同じビルド構成内に同じパラメーターを使用するが値が異なる2つのMSBuildステップがある場合、これは問題のようです。それらを「ビルド構成」レベルで定義する必要がある場合、同じパラメーターの異なる値をビルドステップに渡すことは不可能のようです。
TSmith 2013

2
これは素晴らしいことです。そのバグを除いて。同じパラメーター名を共有する2つの異なるビルドステップに異なるパラメーターを渡したい場合はどうなりますか?
ダグ2013年

39

それはすべて舞台裏で起こります!あなたはただ正しい慣習に従う必要があります。MSBuildスクリプトでは、通常の変数表記を使用します

$(DbPath)

そしてTeamCityでは、システム変数または環境変数を定義します

system.DbPath

TeamCityは、すべてのシステム/環境変数をMSBuildタスクに自動的に送信し、「システム」または「環境」の部分を削除します。また/property:DbPath=system.DbPath、TeamCityタスクに書き込む必要はありません。


ドキュメントによるとシステム変数のみがスクリプトに挿入されます。
ladenedge 2011

1
私が理解しているように、環境変数はビルドエージェントの実際の環境変数として設定されます。システム変数のようにビルドスクリプト/ステップに渡されない場合もありますが、使用できます。MSBuildで$(MyVar)呼び出す間抜けなコマンドラインツールの値を提供するTeamCity環境変数があるため、MSBuildは環境変数を使用して値を提供する必要があります。
Anthony Mastrean 2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.