ファイル内容置換
ファイル内容置換は、ビルド前に正規表現による置換を実行してテキストファイルを処理する ビルド機能です。 ビルド後に、ファイル内容を元の状態に復元します。
File Content Replacer の一般的な使用例は、特定のファイル内の属性を 1 つずつ置換することです。たとえば、ビルド番号でファイルにパッチを適用するために使用できます。
必要に応じて、複数の File Content Replacer ビルド機能を追加できます。
複数の属性を置き換える
異なるファイル / プロジェクトの同じ属性を異なる値に置き換えます
この機能は、 AssemblyInfo Patcher が提供する機能を拡張します。
ビルド機能を追加する方法を参照してください。
ファイル内容置換設定
値を手動で指定するか、必要に応じて編集できる値のプリセットを置換に使用できます。
オプション | 説明 |
|---|---|
テンプレート (オプション) | ファイルコンテンツリプレーサーは、置換するすべての属性のテンプレートを提供します。 テンプレートを読み込む ボタンをクリックすると、置換用の値のプリセットを含むテンプレートのコンボボックスが表示されます。 コンボボックスに入力することで、テンプレートを 言語 (例: |
プロセスファイル | ファイルリストを編集 をクリックし、置換する値を検索するファイルへのパスを指定します。 改行またはコンマで区切られたルールのセットを Ant 風ワイルドカード がサポートされています。例: 定義済みテンプレートを選択した場合、そのテンプレートに関連付けられたファイルが使用されます。 |
パターンに一致するファイルがない場合、ビルドに失敗します | デフォルトで有効になっています。 指定されたパターンに一致するファイルがない場合でも、ビルドの失敗を防ぐには、このオプションを無効にします。 ランナーが指定されたパターンに一致するファイルを少なくとも 1 つ見つけた場合、このファイルに置き換えるコンテンツがない場合でも、ステップは成功したとみなされることに注意してください。 |
ファイルエンコーディング | デフォルトでは、TeamCity はファイルエンコーディングを自動検出します。 エンコードを明示的に指定するには、ドロップダウンメニューから選択します。 カスタムエンコードを指定する場合は、エージェントで サポートされているこ(英語)とを確認してください。 定義済みテンプレートを選択した場合、そのテンプレートに関連付けられたファイルエンコーディングが使用されます。 |
検索対象 | 検索するパターンを 正規表現フォーマットで指定します。 事前定義済みテンプレート が選択されている場合、そのテンプレートに関連付けられたパターンが使用されます。 パターン文字列の先頭に |
大 / 小文字を区別する | デフォルトでは、比較では大文字と小文字が区別されます。 大文字と小文字を区別しない言語の場合はチェックを外します。 |
正規表現モード | デフォルトで有効になっており、検索文字列と置換文字列の両方に適用されます。 固定文字列を使用するには、チェックを外します。 |
置換 | 検索対象 ボックスに文字を置き換えるために使用するテキストを入力します。 ファイルから 検索対象 ボックスの文字を削除するには、このボックスを空白のままにします。
|
テンプレート
このセクションでは、使用可能な置換テンプレートをリストします。
.NET テンプレート
次の アセンブリ属性を置換するためのテンプレートが提供されています (このセクションで AssemblyInfo Patcher との比較を参照してください):
.NET Core csproj テンプレート
AssemblyNameAssemblyTitleAssemblyVersion作成者会社コピーライト説明FileVersionPackageIdPackageVersion製品タイトルバージョンVersionPrefixVersionSuffix
MFC テンプレート
以下の MFC C++ リソース鍵 を置き換えるためのテンプレートが提供されています。
FileDescriptionCompanyNameProductNameLegalCopyrightFileVersion*ProductVersion*
Xcode テンプレート
Info.plist ファイル内の次の コア Foundation キー(英語)を置き換えるためのテンプレートが提供されています。
CFBundleVersionCFBundleShortVersionStringまたは
CFBundleVersionとCFBundleShortVersionStringの両方を同時に
例
カスタムサフィックスで属性値を拡張する
AssemblyConfiguration を固定リテラルに置き換えたくないが、 AssemblyInfo.cs から AssemblyConfiguration を保持し、たとえば [assembly: AssemblyConfiguration("${AssemblyConfiguration} TeamCity でビルド")]) のようにカスタム接尾辞を追加したいだけだとします。
次の操作を行います: デフォルトの置換 $1MyAssemblyConfiguration$7 を $1$5 TeamCity でビルド$7 に変更します。
複雑な正規表現パターンを変更するには、 この外部ツール(英語)が役立つ場合があります。
指定したファイルのみをパッチする
デフォルトの AssemblyInfo テンプレートは通常の Visual Studio プロジェクト / ソリューションレイアウトに従いますが、多くの情報が複数のプロジェクト間で共有され、共有ファイル (たとえば、 CommonAssemblyInfo.cs) に存在する場合があります。
この共有ファイルのみをパッチする、またはプロジェクトごとに AssemblyInfo.cs ファイルをパッチするとします。
以下を実施:
処理しようとしている属性に対応する
AssemblyInfoテンプレートをロードします (たとえば、AssemblyVersion)覗くフィールドのファイルパスのリストをデフォルトの
*/Properties/AssemblyInfo.csから*/CommonAssemblyInfo.csに変更するか、ここに複数のコンマ行または改行で区切られたファイル(myproject1/Properties/AssemblyInfo.cs, myproject2/Properties/AssemblyInfo.csなど)をリストします。
スペースを含むパスパターンを指定する
コンマは区切り文字として認識されるため、コンマに続く場合を除き、スペースは通常、パターンの一部と見なされます。
TeamCity サーバー UI は入力フィールドの先頭と末尾のスペースをトリミングするため、 <スペース>foo.bar のような単一行パターンは保存時に foo.bar になることに注意してください。 次の回避策が利用可能です。
AssemblyVersion 属性の最後のバージョン部分 / ビルド番号のみを変更する:
AssemblyInfo.cs の AssemblyVersion が メジャー.マイナー.リビジョン.ビルド (1.2.3.* に設定)であり、 ビルド 部分(最後のドット(* )のみ)を交換するとします。
AssemblyInfo(C#)テンプレートに AssemblyVersion をロードし、デフォルトパターンを変更します。
to
デフォルトの置換を変更します。
to