GeneXus の MSBuild タスクを使用すると、
ナレッジベース構築に関する処理 (インポート、仕様解析、生成、コンパイルなど) をすべて自動化できます。宣言的な方法 (XML 形式によるスクリプトの作成/プログラミング) によって、今後ユーザーとの対話なしで行うタスクを簡単に指定できます。
これは、開発しているアプリケーションの無人ビルドや自動テストなどを行うのに便利です。
GeneXus の MSBuild タスクは、Microsoft Build Engine (MSBuild) に基づいています。これは、Microsoft および Visual Studio 用の新しいビルドプラットフォームです。汎用かつ拡張可能なビルドプラットフォームで、Framework 2.0 の一部です (無料)。
既存のナレッジベースを開いてすべてのオブジェクトをビルドするための簡単なスクリプトを、次に示します。
<Project DefaultTargets="OpenAndBuildAll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="C:\Program Files\Artech\GeneXus\GeneXusX\Genexus.Tasks.targets" />
<Target Name="OpenAndBuildAll">
<OpenKnowledgeBase Directory="C:\MyKnowledgeBases\TestKnowledgeBase" />
<BuildAll />
</Target>
</Project>
Import 指示 (スクリプトの 2 行目) によって、GeneXus 固有の拡張子が格納されている場所が MSBuild に渡されます。これは必須の指示です。3 行目から 6 行目は「ターゲット」(ビルド対象) と、それを完了するのに必要なアクションまたは「タスク」を示します。ここでは、タスクは OpenKnowledgeBase と BuildAll です。
このように、MSBuild のコードはシンプルですが強力です。全機能の詳細については、
こちらを参照してください。
次のタスクリストに、すべての GeneXus MSBuild タスク (GeneXus.MSBuild.Tasks.dll で提供) およびそのパラメーターを示します。
ナレッジベーステンプレート上の指定したディレクトリーに、ナレッジベースを作成します。
<CreateKnowledgeBase
Directory="kbDirectory"
Template="kbTemplate" | BulkCopyFile="fileNameWithBCPformat"
TemplatesPath="alternateTemplatesPath"
Overwrite="true|false"
IntegratedSecurity="true|false"
UserId="userId"
Password="password"
CreateDbInKbFolder="true|false"
ServerInstance="instance"
DBName="dbName"
Language="language"
/>
Directory: ナレッジベースを作成するディレクトリー (絶対パスまたは相対パス) です。
必須入力項目です。
Template: ナレッジ ベース テンプレート名です。
GeneXus によってエクスポートされるもので、次の 3 つがあります:
このパラメーターと
BulkCopyFile パラメーターのいずれかを指定できます。
あるいは、どちらのパラメーターも省略し、genexus.exe.config ファイルの "DefaultEnvironmentForCreate" エントリーで既定のテンプレートを定義することもできます:
<add key="DefaultEnvironmentForCreate" value=".NET"/>
<add key="DefaultEnvironmentForCreate" value="Java"/>
指定する必要がある値は環境名です ( [ ナレッジベースを作成 ] ダイアログに表示されます)。
BulkCopyFile: ナレッジベースの作成元となる BCP 形式のファイルの名前です。
TemplatesPath: テンプレートファイルの取得元のディレクトリーを指定します。そのディレクトリーには、GeneXus インストールから取得した以下のフォルダが格納されている
必要があります:
- ObjectDefinitions
- Startup
- Templates
Overwrite: true または false (既定値) です。ナレッジベースを作成する前にフォルダを削除するかどうかを示します。
IntegratedSecurity: true は信頼された接続を使用することを示し、false は特定のユーザー ID とパスワードを使用することを示します。既定値は true です。
UserId: IntegratedSecurity を false に設定した場合に使用するユーザー名です。
Password: IntegratedSecurity を false に設定した場合に使用するパスワードです。
CreateDbInKbFolder: ナレッジベースフォルダにナレッジベース データベース ファイルを作成する場合は true に、DBMS の既定データフォルダを使用する場合には false に設定します。既定値は true です。
ServerInstance: SQL Server のサーバー名とインスタンスです。例: 「.\SQLEXPRESS」または「localhost」。このプロパティを使用しない場合、既定のローカルインスタンスが使用されます。
DBName: ナレッジベースデータベースの名前です。既定値は、ナレッジベース名の先頭に「GX_KB_」を付けたものです。
Language: 作成するナレッジベースの言語です。
C:\MyKnowledgeBases に .NET ナレッジベースを作成します。
<CreateKnowledgeBase Directory="C:\MyKnowledgeBases" Template="CSharp.KBTemplate" />
ナレッジベースを再作成するために必要なファイルを生成します
(BCP 形式)。
<BulkCopyKnowledgeBase
FullKB="true|false"
Outputfile="outputfile"
/>
FullKB: 値 true は、ナレッジベースの各バージョンの情報を生成します。値 false は、アクティブなバージョンの情報のみを生成します。
必須入力項目です。
OutputFile: 抽出した情報が格納される .zip ファイルの名前です。値が指定されない場合、このファイルはナレッジベースと同じディレクトリーに同じ名前で生成されます。
基本的に、BulkCopyKnowledgeBase タスクは、現在のナレッジベースのすべての情報が格納された BCP ファイル (GeneXus Server がナレッジベースまたはチェックアウトを送信するために使用する形式) を生成するために使用します。そのナレッジベースのバックアップを保存するために使用できます。
1. 以下の内容の createBackup.msbuild ファイルを定義します:
<Project DefaultTargets="RunTests" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(GXInstall)\genexus.tasks.targets"/>
<Target Name="CreateBackupAndRestore">
<PropertyGroup>
<BackupFilename>KB_$( [ System.DateTime ] ::Now.ToString('yyyyMMddhhmmss')).bcp</BackupFilename>
<BackupPath>$( [ System.IO.Path ] ::Combine('$(KBDir)', '$(BackupFilename)'))</BackupPath>
</PropertyGroup>
<!-- Create a backup of the KB located at $(KBDir) -->
<OpenKnowledgeBase Directory="$(KBDir)"/>
<BulkcopyKnowledgeBase FullKB="false" OutputFile="$(BackupPath)"/>
<CloseKnowledgeBase/>
<!-- Create a new KB from the BCP file in a sibling directory -->
<CreateKnowledgeBase Directory="$(KBDir)_restore" BulkCopyFile="$(BackupPath)"/>
<CloseKnowledgeBase/>
</Target>
</Project>
2. コマンドラインで実行します:
c:\>msbuild createBackup.msbuild /t:CreateBackupAndRestore /p:KBDir=c:\Models\MyKB /p:GXInstall="F:\Program Files (x86)\GeneXus\GeneXus17"
Import タスクについては、次を参照してください:「
MSBuild タスクのインポート」。
OpenKnowledgeBase タスクについては、次を参照してください:「
OpenKnowledgeBase MSBuild タスク」。
このタスクを使用してナレッジベースを明示的に閉じる必要はありません。ナレッジベースは、MSBuild タスクで処理が終了したときに自動的に閉じられます。
これは、同じ MSBuild タスクの実行中に複数のナレッジベースを開く必要がある場合、たとえば、あるナレッジベースからオブジェクトをエクスポートし、別のナレッジベースにインポートする場合などに便利です。
<CloseKnowledgeBase/>
指定した環境のプロパティの値を設定します。
<SetEnvironmentProperty Name="$(PropertyName)" Value="$(PropertyValue)"/>
Name: $(PropertyName) は、有効なプロパティ名です。
必須入力項目です。
Value: $(PropertyValue) は、指定したプロパティのための有効な値です。
必須入力項目です。
<SetEnvironmentProperty Name="Preserve Table Casing" Value="False" />
注: 例のコードでわかるように、MSBuild では
IDE で表示されるプロパティ名と同じ名前を付けることができます。
指定したバージョンのプロパティの値を設定します。
<SetVersionProperty Name="$(PropertyName)" Value="$(PropertyValue)"/>
Name: $(PropertyName) は、有効なプロパティ名です。
必須入力項目です。
Value: $(PropertyValue) は、指定したプロパティのための有効な値です。
必須入力項目です。
ナレッジベースのプロパティの値を設定します。
<SetKnowledgeBaseProperty Name="$(PropertyName)" Value="$(PropertyValue)" />
Name: $(PropertyName) は、有効なプロパティ名です。
必須入力項目です。
Value: $(PropertyValue) は、指定したプロパティのための有効な値です。
必須入力項目です。
指定したデータストアのプロパティの値を設定します。
<SetDataStoreProperty Datastore="$(DataStoreName)" Name="$(PropertyName)" Value="$(PropertyValue)" />
Datastore: $(DataStoreName) は、ナレッジベース内に定義されているデータストアの名前です。通常、この名前の値は Default です。
Name: $(PropertyName) は、有効なモデルのプロパティ名です。
必須入力項目です。
Value: $(PropertyValue) は、指定したプロパティのための有効な値です。
必須入力項目です。
指定したジェネレーターのプロパティの値を設定します。
<SetGeneratorProperty Generator="$(GeneratorName)" Name="$(PropertyName)" Value="$(PropertyValue)"/>
Generator: $(GeneratorName) は、ナレッジベース内に定義されているジェネレーターの名前です。通常、この名前の値は Default または Reorg です。
Name: $(PropertyName) は、有効なモデルのプロパティ名です。
必須入力項目です。
Value: $(PropertyValue) は、指定したプロパティのための有効な値です。
必須入力項目です。
<SetGeneratorProperty Generator="Default" Name="Database access caching" Value="Yes" />
注: 例のコードでわかるように、MSBuild では
IDE で表示されるプロパティ名と同じ名前を付けることができます。
GeneratorName を指定する際には、以下のことを考慮する必要があります:
フロント エンド ジェネレーターがバック エンド ジェネレーターと同じタイプである場合、以下のようにジェネレーターの名前を指定する必要があります:
<SetGeneratorProperty Generator=".NET" Name="Enable Datepicker" Value="Yes" />
反対に、フロント エンド ジェネレーターがバックエンドと一致しない場合は、以下に示すように "SmartDevices" を記述する必要があります:
<SetGeneratorProperty Generator="SmartDevices" Name="Generate Android" Value="$(DoIncludeSD)"/>
<SetGeneratorProperty Generator="SmartDevices" Name="Generate Apple" Value="$(DoIncludeSD)"/>
<!Apple properties -->
<SetGeneratorProperty Generator="SmartDevices" Name="MAC_HOST" Value="$(MacHostName)"/>
<SetGeneratorProperty Generator="SmartDevices" Name="MAC_USER" Value="$(MacBuilderUser)"/>
<SetGeneratorProperty Generator="SmartDevices" Name="MAC_PASS" Value="$(MacBuilderPsw)"/>
<!Android properties -->
<SetGeneratorProperty Generator="SmartDevices" Name="JDK Directory" Value="$(JAVA_HOME_FOR_ANDROID_GENERATOR)"/>
<SetGeneratorProperty Generator="SmartDevices" Name="ANDROID_SDK_DIR" Value="$(ANDROID_HOME)"/>
指定したオブジェクトのプロパティの値を設定します。
<SetObjectProperty Object="$(ObjectName)" Name="$(PropertyName)" Value="$(PropertyValue)"/>
Object: $(ObjectName) は、ナレッジベースで定義された、プロパティが割り当てられる
オブジェクトの名前です。
必須入力項目です。
Name: $(PropertyName) は、有効なプロパティ名です。
必須入力項目です。
Value: $(PropertyValue) は、指定したプロパティのための有効な値です。
必須入力項目です。
<SetObjectProperty Object="Customer" Name="Business Component" Value="True" />
指定した
環境プロパティの値を既定値にリセットします。
構文
<ResetEnvironmentProperty Name="$(PropertyName)"/>
オプション
Name: $(PropertyName) は、有効な環境プロパティ名です。
必須入力項目です。
<ResetEnvironmentProperty Name="Preserve Table Casing"/>
ResetDataStoreProperty
指定した [ Data Store ] プロパティの値を既定値にリセットします。
<ResetDataStoreProperty Datastore="$(DataStoreName)" Name="$(PropertyName)"/>
Datastore: $(DataStoreName) は、ナレッジベース内に定義されているデータストアの名前です。通常、この名前の値は Default です。
オプション、既定値「Default」、未実装。
Name: $(PropertyName) は、有効なデータ ストア プロパティ名です。
必須入力項目です。
<ResetDataStoreProperty Name="Database schema"/>
指定したジェネレータープロパティの値を既定値にリセットします。
<ResetGeneratorProperty Generator="$(GeneratorName)" Name="$(PropertyName)"/>
Generator: $(GeneratorName) は、ナレッジベース内に定義されているジェネレーターの名前です。通常、この名前の値は Default または Reorg です。
オプション、既定値「Default」、未実装。
Name: $(PropertyName) は、有効なジェネレーターのプロパティ名です。
必須入力項目です。
<ResetGeneratorProperty Name="Database access caching" />
指定したプロパティの値を取得します。
<GetKnowledgeBaseProperty Name="$(PName)">
<Output TaskParameter="PropertyValue" PropertyName="PValue"/>
</GetKnowledgeBaseProperty>
<GetVersionProperty Name="$(PName)">
<Output TaskParameter="PropertyValue" PropertyName="PValue"/>
</GetVersionProperty>
<GetEnvironmentProperty Name="$(PName)">
<Output TaskParameter="PropertyValue" PropertyName="PValue"/>
</GetEnvironmentProperty>
<GetGeneratorProperty Name="$(PName)">
<Output TaskParameter="PropertyValue" PropertyName="PValue"/>
</GetGeneratorProperty>
<GetDataStoreProperty Name="$(PName)">
<Output TaskParameter="PropertyValue" PropertyName="PValue"/>
</GetDataStoreProperty>
<GetObjectProperty Object="$(SelectedKBObject)" Name="$(PName)">
<Output TaskParameter="PropertyValue" PropertyName="PValue" />
</GetObjectProperty>
現在開いているナレッジベースをファイルにエクスポートします。
<Export File="$(ExportFileName)" Objects="$(ObjectList)" DependencyType="$(depType)"
ReferenceType="$(refType)" IncludeGXMessages="$(includeGXMsg)" IncludeUntranslatedMessages="$(includeUtMsg)" OnlyStructuresForTransactions="$(OnlyStructTrn)" />
File: $(ExportFileName) は、エクスポートファイル (.XPZ) の完全修飾名または部分修飾名です。
必須入力項目です。
Objects: $(ObjectList) は、指定するオブジェクトのリストです (「
MSBuild タスクのオブジェクトリスト」を参照してください)。このパラメーターを使わない限り、ナレッジベース内のすべてのオブジェクトがエクスポートされます。
DependencyType: Objects パラメーターを使用する場合に、DependencyType を ReferencedBy または ReferencesTo に設定すると、元のセットによって
参照されるオブジェクト、または元のセットを
参照するオブジェクトもエクスポートすることができます。既定値は ReferencesTo です。
ReferenceType: 指定した DependencyType を持つオブジェクトを追加するときに使用する参照の種類を制御します。有効な値は次のとおりです: None (参照を考慮しません。つまり、DependencyType パラメーターの影響を回避します)、Minimal (新しいナレッジベース内に読み込むときに必要になる参照のみ)、Hard (すべての絶対参照)、「All」です。既定値は Minimal です。
IncludeGXMessages: 言語をエクスポートするとき、標準 GeneXus メッセージはこのパラメーターを使用しない限りエクスポートされません。有効な値は true と false です。既定値は false です。
IncludeUntranslatedMessages: 言語をエクスポートするとき、未翻訳のメッセージはこのパラメーターを使用しない限りエクスポートされません。有効な値は true と false です。既定値は false です。
OnlyStructuresForTransactions: 選択したトランザクションの構造をエクスポートします。有効な値は true と false です。既定値は false です。
ExportKBInfo: ナレッジベースに関する情報 (KB Guid とソース) が含まれています。有効な値は true と false です。既定値は true です。
ExportAll: モデル全体とそのアクティブオブジェクトをエクスポートするように指定します。有効な値は true と false です。既定値は false です。
現在開いているナレッジベースの内容を、ファイル c:\MyExports\ImportTestFile.xpz をエクスポートします。
<Export File="c:\MyExports\ImportTestFile.xpz" />
ナレッジベース内のすべてのオブジェクトをビルドし、オプションでナレッジベースを強制的に生成します。ビルドとは、アプリケーションを正常に実行するのに必要なすべてのタスクを実行することです。ナレッジベースオブジェクトは仕様解析、生成、コンパイルされます。再編成が必要な場合は、それも自動的に実行されます。
<BuildAll ForceRebuild="true|false" CompileMains="true|false" DetailedNavigation="true|false" FailIfReorg="true|false" DoNotExecuteReorg="true|false"/>
ForceRebuild: リビルドを実行するかどうかを示します。既定値は false です。
CompileMains: false に設定すると、開発者メニューだけがコンパイルされます。true にすると、ナレッジベースにあるすべてのメインオブジェクトもコンパイルされます。
DetailedNavigation: 詳細レベルのナビゲーションが必要かどうかを示します。既定値は false です。
ビルド時に暗黙的な再編成があったときに続行しないようにするか、または再編成の実行を希望しない場合のために、次の 2 つのオプションが追加されました:
FailIfReorg: true の場合、再編成があり (生成)、ほかに何も生成されないときは、ビルドは失敗します。既定値は false です (ビルドを続行します)。
true の場合、生成された再編成は後で実行できます。
再編成がないときは、このオプションは適用されません。
DoNotExecuteReorg: 再編成を実行するかどうかを示します。既定値は false です (再編成を実行します)。
再編成オプションの -donotexecute に似ていますが、プログラムは実行されません。
現在開いているナレッジベースにあるすべてのオブジェクトを、強制生成なしでビルドします。
<BuildAll ForceRebuild="false" />
指定したオブジェクトと、そのオブジェクトによって (直接的または間接的に) 呼び出されているすべてのオブジェクトをビルドします。ビルドとは、アプリケーションを正常に実行するのに必要なすべてのタスクを実行することです。オブジェクト (選択したオブジェクトと、そのオブジェクトが呼び出すオブジェクト) は仕様解析、生成、コンパイルされます。再編成が必要な場合は、それも自動的に実行されます。
<BuildOne ForceRebuild="true|false" BuildCalled="true|false" ObjectName="$(ObjectName)" DetailedNavigation="true|false" />
ForceRebuild: リビルドを実行するかどうかを示します。既定値は false です。
ObjectName: [ Main ] プロパティが true に設定されている既存のオブジェクトの名前です。
必須入力項目です。
DetailedNavigation: 詳細レベルのナビゲーションが必要かどうかを示します。既定値は false です。
現在開いているナレッジベースにあるオブジェクト MyMainMenu、および MyMainMenu が呼び出しているすべてのオブジェクトをビルドします。
<BuildOne ObjectName="MyMainMenu" />
ナレッジベース/環境の成果物 (アーティファクト) をビルドします。
GeneXus 16 Upgrade 3 以降で利用できます。詳細:
SAC 45075
<RebuildArtifacts/>
GeneXus IDE の [ ツール ] > [ オプション ] > [ ビルド ] > [ カスタムビルド ] で定義済みの
カスタムビルドのタスクを実行します。
<CustomBuild Name="$(CustomBuild Name)" ObjectName="$(ObjectName)"/>
CustomBuild Name: カスタムビルドのコマンドの名前です。
必須入力項目です。
ObjectName: [ Main ] プロパティが true に設定されている既存のオブジェクトの名前です。カスタムビルドがオブジェクトに関するものである場合は必須です。
"Build mobile without compile" が、GeneXus IDE で以前定義されたカスタムビルドの名前であり、最終的なコンパイルを除くビルドプロセスのすべてのタスクを実行するとします。
その場合、MSbuild が実行するタスクは、"Build mobile without compile" で定義されているタスクです。
<CustomBuild Name="Build mobile without compile" ObjectName="MainPanelSD"/>
指定したオブジェクトをナレッジベースから削除します。
<DeleteObject Objects="$(ObjectName)" IncludeChildren="true|false" FailWhenNone="true|false"/>
Objects: $(ObjectName) は削除するオブジェクトの名前です。
必須入力項目です。
IncludeChildren: 指定したオブジェクトの名前がフォルダまたはモジュールの場合に "true|false" を使用できます。
FailWhenName: オブジェクトが存在しない場合にエラーを発生させるかどうかを指定します。
指定したオブジェクトと、そのオブジェクトによって (直接的または間接的に) 参照されているすべてのオブジェクトをビルドし、実行します。オブジェクトの [ Main ] プロパティを True に設定する必要があります。ビルドとは、オブジェクトを正常に実行するのに必要なすべてのタスクを実行することです。オブジェクト (選択したオブジェクトと、そのオブジェクトが呼び出すオブジェクト) は仕様解析、生成、コンパイルされます。再編成が必要な場合は、それも自動的に実行されます。この動作は
Build=false を指定して変更できます。この場合、オブジェクトの実行だけ行われます。
<Run ForceRebuild="true|false" Build="true|false" BuildCalled="true|false" ObjectName="$(ObjectName)" DetailedNavigation="true|false" />
ForceRebuild: リビルドを実行するかどうかを示します。既定値は false です。
Build: オブジェクトもあわせてビルドするかどうかを示します。既定値は true です。
BuildCalled: 呼び出されたオブジェクトもあわせてビルドするかどうかを示します。既定値は true です。
ObjectName: [ Main ] プロパティが True に設定されている既存のオブジェクトの名前です。
必須入力項目です。
DetailedNavigation: 詳細レベルのナビゲーションが必要かどうかを示します。既定値は false です。
Parameters: オブジェクトの実行時にパラメーターを渡すことができます。
現在開いているナレッジベースにあるオブジェクト MyMainMenu、および MyMainMenu が呼び出しているすべてのオブジェクトをビルドし、オブジェクト MyMainMenu を実行します。
<Run ObjectName="MyMainMenu" />
指定したオブジェクトを、指定のリビジョンにリストアします。
<RestoreRevision Object=<"object type":"object name"> RevisionId=<"revision id"> />
現在開いているナレッジベースで必要なデータベースオブジェクト (テーブル、インデックス、制限など) を作成します。
<CreateDatabase ExecuteCreate="true|false" />
ExecuteCreate
[ Connectivity Support ] プロパティ = "Offline" と設定されたネイティブ モバイル オブジェクトのリストに対し、オフラインデータベースを作成します。
<CreateOfflineDatabase OfflineObjectNames="$(ObjectName)">
OfflineObjectNames: セミコロン (;) で区切ったオフラインのオブジェクト名のリストです。
必須入力項目です。
OfflineDatabaseByTable オブジェクトおよび OfflineDatabaseByRowHash オブジェクトを作成して "Offline" に設定し、「オフラインデータベースを作成」を実行します。
<CreateOfflineDatabase OfflineObjectNames="OfflineDatabaseByTable;OfflineDatabaseByRowHash"/>
最後に指定した影響データベースをコンパイルして実行します。
<Reorganize />
ナレッジベース内のすべてのオブジェクトを仕様解析し、オプションでナレッジベースを強制的に生成します (生成は行いません)。
<SpecifyAll ForceRebuild="true|false" DetailedNavigation="true|false" />
ForceRebuild: リビルドを実行するかどうかを示します。既定値は false です。
DetailedNavigation: 詳細レベルのナビゲーションが必要かどうかを示します。既定値は false です。
現在開いているナレッジベースにあるすべてのオブジェクトを、強制生成なしで仕様解析します。
<SpecifyAll ForceRebuild="false" />
以前の SpecifyAll タスクの実行によって生成待機中のすべてのオブジェクトを生成します。生成されたオブジェクトのコンパイルは行いません。
<GenerateOnly />
オプションのパラメーター ObjectName で指定されたオブジェクトをコンパイルします。ObjectName パラメーターを省略すると、開発者メニューがコンパイルされます。
<Compile ObjectName="$(ObjectName)" />
ObjectName: [ Main ] プロパティが true に設定されている既存のオブジェクトの名前です。
- オプションで、既定値を使用すると開発者メニューがコンパイルされます。
現在開いているナレッジベースにあるオブジェクト MyMainMenu をコンパイルします。
<Compile ObjectName="MyMainMenu" />
対応する設計モデルの情報を使用してワークモデルを更新します。このタスクはこれまでに行われたすべての設計変更を廃棄するため、注意して実行する必要があります。たとえば、設計変更のためにデータベースの変更が必要になった場合に UpdateWorkingModel タスクを実行すると、設計変更はデータベースに
適用されません。
<UpdateWorkingModel />
GeneXus プロジェクトによって定義されたデータベーススキーマを .xml ファイルに書き出します。
<WriteKnowledgeBaseSchema File="$(KnowledgeBaseSchemaFile)" DesignModel="true|false" SortByName="true|false" />
File: $(KnowledgeBaseSchemaFile) は、作成するナレッジベース スキーマ ファイルの完全修飾名または部分修飾名です。
必須入力項目です。
DesignModel: 設計モデル情報を表示するには true、ターゲットモデル情報を表示するには false に設定します。既定値は false です。
SortByName: テーブルとインデックスの情報を名前順で表示するには true に設定します。既定値は false です。
GeneXus プロジェクト内で設定されたデータベーススキーマを .xml ファイルに書き込みます。
<WriteDatabaseSchema File="$(DataBaseSchemaFile)" />
File: $(DataBaseSchemaFile) は、作成するデータベース スキーマ ファイルの完全修飾名または部分修飾名です。
必須入力項目です。
データベーススキーマとナレッジ ベース スキーマのファイルを比較します。これらのファイルは、WriteDatabaseSchema および WriteKnowledgeBaseSchema タスクを使用して作成している可能性があります。これは、データベーススキーマが、ナレッジベースによって定義されているスキーマと同期しているかどうかを確認するのに便利です。
<CompareSchemas DBFile="$(DataBaseSchemaFile)" KBFile="$(KnowledgeBaseSchemaFile)" DiffFile="$(ComparisonDifferenceFile)" />
DBFile: $(DataBaseSchemaFile) は、比較するデータベース スキーマ ファイルの完全修飾名または部分修飾名です。
必須入力項目です。
KBFile: $(KnowledgeBaseSchemaFile) は、比較するナレッジベース スキーマ ファイルの完全修飾名または部分修飾名です。
必須入力項目です。
DiffFile: $(ComparisonDifferenceFile) は、スキーマ比較で判明した差分データの記録用として生成されるファイルの完全修飾名または部分修飾名です。
CreateKnowledgeBase タスクは、ナレッジベースの一貫性を確認します。
<CheckKnowledgeBase Fix="true|false" />
Fix: エラーを修正するかどうか決定します。
GetCategoryObjects タスクは、特定のカテゴリに属するすべてのオブジェクトのリストを返します。
<GetCategoryObjects CategoryName="TestCategory">
<Output TaskParameter="Objects" PropertyName="ObjList"/>
</GetCategoryObjects>
<Message Text="Objects in TestCategory = $(ObjList)"/>
設定を変更します。IDE では、 [ リリース ] 、 [ デバッグ ] 、 [ 性能テスト ] 、 [ ライブ編集 ] が表示されるコンボボックスです。
<SetConfiguration Configuration="$(Configuration)"/>
Configuration: $(Configuration) の有効な設定は、"Release"、"Debug"、"Performance Test" です。現時点では "Live Editing" はこのタスクに
含まれません。
SetCredential タスクは、後で何らかのサービス、たとえばクラウドへのデプロイに使用される GeneXus Account を変更します。IDE の [ ツール ] > [ GeneXus Account ] で変更できるものと同じです。
<SetCredential UserName="$(UserName)" UserPassword="$(UserPassword)" Persist="true|false" />
UserName: $(UserName) は有効な GeneXus Account ユーザー名です。
UserPassword: &(UserPassword) は、GeneXus Account ユーザー名に対応するパスワードです。
Persist: 情報を残すか、情報がこのセッション用のみであるかを指定します。
「
チーム開発の MSBuild タスク」も参照してください。
アクティブなバージョンまたは指定したバージョンから、新しい Frozen バージョンを作成します。
<CreateVersion VersionName="$(VersionName)" VersionDescription="$(VersionDescription)" Parent="$(ParentName)" />
VersionName: バージョンに割り当てる名前です。
必須入力項目です。
VersionDescription: バージョンの説明です (オプション)。Parent は、既存の開発バージョン名です。バージョンツリーのルートエレメントの指定には、特殊な値 *Trunk またはナレッジベース名を使用できます。
Parent: 既存の開発バージョン名または Frozen バージョン名です。バージョンツリーのルートエレメントの指定には、特殊な値 *Trunk またはナレッジベース名を使用できます。
開発バージョンを「アクティブ」、つまり現在のバージョンにします。以降のすべてのコマンドは、開発バージョンまたは Frozen バージョンを指定していない場合、このバージョンに作用します。
<SetActiveVersion VersionName="$(VersionName)" />
VersionName: 既存のバージョンの名前です。
必須入力項目です。
ルートバージョンを、パラメーターとして指定したバージョンに戻します (上書きします)。ルートバージョンへの変更はすべて失われます。
<RevertToVersion VersionName="$(VersionName)" />
VersionName: 既存のバージョンの名前です。
必須入力項目です。
2 つのバージョンをマージします。
<MergeVersions SourceVersion="$(SourceVersion)" TargetVersion="$(TargetVersion)" SinceDate="$(SinceDate)" />
SourceVersion: 変更の取得元のバージョンです。
必須入力項目です。
TargetVersion: 変更の適用先のバージョンです。指定しなかった場合、アクティブバージョンが使用されます。
SinceDate: 変更の適用を開始する日です。指定しなかった場合、すべての変更が適用されます。パラメーターでサポートされる書式の詳細については、
こちらを参照してください。一部の書式は、マシンの地域設定に依存します。依存しない書式 ("yyyy-mm-dd hh:MM:ss" など) をお勧めします。
アクティブな
ナレッジベースバージョンを返します。
<GetActiveVersion/>
結果の例
The active version is 'KBVersionName'
> GetActiveVersion Success
必要に応じて、値を変数で取得することができます:
<GetActiveVersion>
<Output TaskParameter="VersionName" PropertyName="ActiveVersionName" />
</GetActiveVersion>
アクティブなバージョンまたは指定したバージョンに新しい環境を作成します。
<CreateEnvironment Name="$(EnvironmentName)" Template="$(KBTemplate)" />
Name: 環境に割り当てる名前です。
必須入力項目です。
Template: GeneXus インストール環境の Template ディレクトリーにある KBTemplates ファイルの 1 つで、ジェネレーターと DBMS のタイプに関する情報が含まれています。
必須入力項目です。
環境を「アクティブ」または現在の環境にします。以降、環境を指定しないすべてのコマンドはこの環境に作用します。環境は、アクティブなバージョン内に存在する必要があります。
<SetActiveEnvironment EnvironmentName="$(EnvironmentName)" />
EnvironmentName: 既存の環境名です。
必須入力項目です。
アクティブな環境を返します。
<GetActiveEnvironment/>
結果の例
The active environment is 'NETSQLServer'
> GetActiveEnvironment Success
必要に応じて、値を変数で取得することができます:
<GetActiveEnvironment>
<Output TaskParameter="EnvironmentName" PropertyName="ActiveEnvironmentName" />
</GetActiveEnvironment>
「
GeneXus のモジュール配布」を参照してください。
MSBuild スクリプトを実行すると、既定では結果は標準出力に表示されます。次のパラメーターを使用して、XML 出力をファイルに生成するように指定することもできます:
XmlOutputFile="$(XmlOutputFile)"
結果をプログラムで処理するには、 [
CaptureOutput ] プロパティを確認してください。
MSBuild スクリプトは、MSBuild.exe (既定のパス名のまますべての製品をインストールした場合、フォルダ C:\WINDOWS\Microsoft.NET\Framework\v4.0 に格納されています) を起動することでコマンドラインから実行できます。Demo.msbuild というスクリプトを実行するためのコマンドラインの例を次に示します。
msbuild Demo.msbuild
注: MSBuild タスクは、Microsoft .NET Framework 32 ビット (バージョン 4.0 以降) を使用して実行するようにします。64 ビットの Framework を使用した場合は、次のエラーが表示されます:
エラー: ファイルまたはアセンブリ 'gxio, Version=0.0.0.0, Culture=neutral, PublicKeyToken=6f5bf81c27b6b8aa'、あるいはその依存関係の 1 つを読み込めませんでした。指定されたファイルが見つかりません。
このテストは、単純にすべての GeneXus MSBuild タスクを起動します。
<Project DefaultTargets="Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="C:\Program Files\Artech\GeneXus\GeneXusX\GeneXus.Tasks.targets" />
<PropertyGroup>
<KBTemplate>csharp.kbtemplate</KBTemplate>
<KBPath>c:\TestKnowledgeBases</KBPath>
</PropertyGroup>
<Target Name="CreateKnowledgeBase">
<RemoveDir Directories="$(KBPath)" />
<CreateKnowledgeBase Directory="$(KBPath)\TestCreate" Template="$(KBTemplate)" />
</Target>
<Target Name="Import">
<Import File="c:\NameOfFileToImport.xpz" />
</Target>
<Target Name="OpenKnowledgeBase">
<OpenKnowledgeBase Directory="$(KBPath)\TestCreate" />
</Target>
<Target Name="Export">
<Export File="c:\NameOfDistributionFile.xpz" />
</Target>
<Target Name="Reorganize">
<Reorganize />
</Target>
<Target Name="SpecifyAll">
<SpecifyAll ForceRebuild="false" />
</Target>
<Target Name="Generate">
<Generate />
</Target>
<Target Name="Compile">
<Compile ObjectName="NameOfObjectToCompile" />
</Target>
<Target Name="UpdateWorkingModel">
<UpdateWorkingModel />
</Target>
<Target Name="BuildOne">
<BuildOne ObjectName="NameOfObjectToBuild" />
</Target>
<Target Name="BuildAll">
<BuildAll />
</Target>
<Target Name="RestoreRevision">
<OpenKnowledgeBase Directory="$(KBPath)" />
<RestoreRevision Object="ObjectType:ObjectName" RevisioID="RevisionId" />
</Target>
</Project>
このスクリプトを実行するには、次のようなコマンドラインを使用する必要があります:
MSBuild /t:CreateKnowledgeBase;Import;OpenKnowledgeBase;Export;Reorganize;SpecifyAll;Generate;Compile;UpdateworkingModel;BuildOne;BuildAll
TestAlPrimitives.msbuild
それぞれのタスクを独立して実行するには、次のようにします:
MSBuild /t:CreateKnowledgeBase TestAlPrimitives.msbuild
MSBuild /t:OpenKnowledgeBase;Import TestAlPrimitives.msbuild
MSBuild /t:OpenKnowledgeBase;SpecifyAll TestAlPrimitives.msbuild
...
<Project DefaultTargets="TestGenexus" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="C:\Program Files\Artech\GeneXus\GeneXusX\Genexus.Tasks.targets" />
<PropertyGroup>
<KBPath>C:\MyKnowledgeBases\test</KBPath>
</PropertyGroup>
<Target Name="TestGenexus">
<OpenKnowledgeBase Directory="$(KBPath)" />
<SpecifyAll />
</Target>
</Project>
[ CaptureOutput MSBuild ] プロパティ
GeneXus Jenkins プラグインを使用してユニットテストを作成しタスクを追加する方法
チーム開発の MSBuild タスク
アプリケーションをデプロイする MSBuild タスク
GAM MSBuild タスク