Skip to Content
新しいバージョン 12 を公開しました 🎉

実行順序

互いに依存するターゲットは、正しい順序で実行する必要があります。Babel Desktop はそれらをフローにまとめ、ステップに番号を付け、あるターゲットのリネームマップを次のターゲットに渡すことができます。

2 つのターゲットの接続

ターゲットの左右のアンカーは、そのターゲットを別のターゲットに接続します。先に実行するターゲットの右のアンカーから、後に実行するターゲットの左のアンカーへドラッグするか、2 つのアンカーを順にクリックします。すると、Babel Desktop が接続の目的を尋ねます。

「Connect targets」ダイアログ。後のターゲットは先のターゲットのリネームマップを読み込み、使用するパブリックな名前を同じようにリネームできること、または単に先のターゲットの後に実行できることが説明され、「Execution order only」、「Cancel」、「Pass the map file」の各ボタンが表示されています「Connect targets」ダイアログ。後のターゲットは先のターゲットのリネームマップを読み込み、使用するパブリックな名前を同じようにリネームできること、または単に先のターゲットの後に実行できることが説明され、「Execution order only」、「Cancel」、「Pass the map file」の各ボタンが表示されています「Connect targets」ダイアログ。後のターゲットは先のターゲットのリネームマップを読み込み、使用するパブリックな名前を同じようにリネームできること、または単に先のターゲットの後に実行できることが説明され、「Execution order only」、「Cancel」、「Pass the map file」の各ボタンが表示されています

実行順序とマップリンクの選択

選択肢効果
実行順序のみ「フロー →」というラベルの付いたフローエッジです。ターゲット A がターゲット B より先に実行されます。A から B へは何も渡されません。
マップ ファイルを渡すマップリンクです。「MAP」というラベル付きの破線で描画されます。A が XML のリネームマップを書き出し、B がそれを読み込むため、B は A のパブリックシンボルの新しい名前を使用します。A は B より先に実行されます。アセンブリ間のリネームを参照してください。

B が A のパブリック API を呼び出し、両方をパブリックシンボルのリネームありで難読化する場合は、マップリンクを使用します。B を A の後に実行するだけで、A から何も読み込まない場合は、フローエッジを使用します。

マップリンクを作成すると、先のターゲットの「Generate Map Out File」がオンになり、そのマップが後のターゲットの「Map In Files」に追加されます。先のターゲットに出力パスもマップのパスも設定されていない場合、マップは入力ファイルの隣の決まった場所(たとえば BabelOut/Library2.dll.map.xml)に書き出されるため、後のターゲットは必ずマップを見つけられます。

マップリンクは個別には保存されません。Babel Desktop はこの 2 つの設定からマップリンクを読み取るため、手作業で書いたプロジェクトや Babel UI で作成したプロジェクトでも、マップリンクが表示されます。同じリンクは次の 3 か所に表示されます。

  • キャンバス上では、「MAP」の破線として表示されます。後のターゲットのカードでは、「マップの読み込み元」の下に表示されます。
  • 後のターゲットのプロパティパネルでは、「マップ ファイル」グループの「ほかのターゲットのマップ」の下に表示されます。マップファイルを参照してください。
  • グリッドでは、後のターゲットの「マップ」タブに表示され、項目には先のターゲットの名前とともに「から」と表示されます。ターゲットの詳細を参照してください。

別のターゲットにマージされたターゲットは独自のマップを書き出さないため、マップリンクでマップを書き出す側のターゲットにはなれません。

フローとステップ

フローとは、フローエッジ、マップリンク、またはマージ、埋め込み、参照の依存関係によって結び付けられたターゲットのグループです。互いに結び付いていないターゲットは、別々のフローになります。各ターゲットのノードの右上には、そのステップ、つまりフロー内で実行される順番が表示されます。カードには、「フロー 1 · ステップ 2」のように両方が表示されます。

フロー内では、ターゲットはステップの順に実行され、順序を決めるものがない部分ではプロジェクト内の順序で実行されます。フローはプロジェクト内の順序で 1 つずつ実行されますが、独立したフローを並列実行するがオンの場合は同時に実行されます。フローエッジは標準の MSBuild ターゲット依存関係としてプロジェクトに保存されるため、MSBuild も同じ順序でターゲットをビルドします。

グリッドでは、同じ情報を「フロー · ステップ」列と「後に実行」列(先に完了する必要があるターゲット)で表示できます。「フローでグループ化」を使うと、行がフローごとにグループ化されます。プロジェクトのグリッドを参照してください。

互いを待ち合うターゲット

Babel Desktop は、自分自身へのリンクと重複するエッジを受け付けません。また、ターゲットが互いを待ち合うことになる接続も拒否します。ディスクから開いたプロジェクトのターゲットが互いのマップファイルを待ち合っている場合でも、プロジェクトは開けます。その場合、Babel Desktop は Library1.dll → Library2.dll → Library1.dll のように循環を示すエラーを表示し、リンクを 1 つ削除するまでプロジェクトは実行されません。

接続の削除

フローエッジやマップリンクを削除するには、それをクリックして Delete または Backspace を押します。Esc を押すと、作成中の接続がキャンセルされるか、選択が解除されます。マップリンクを削除すると、そのマップは後のターゲットの「Map In Files」から取り除かれます。プロパティパネルの「ほかのターゲットのマップ」で、ターゲット名の × をクリックして削除することもできます。

Last updated on