1

MSBuild を使用して一連の構成ファイルから一連の dll を作成する方法を理解しようとしています。つまり、いくつかの構成ファイルがあります

Policy.1.1.mylib.config
Policy.1.2.mylib.config
...
Policy.1.x.mylib.config

msbuild ターゲットでは、対応する構成ファイル パラメーターから動的に生成された Outputfile パラメーター値 ( Policy.1.i.mylib.dllfor each ) を使用して、これらのファイルのリストを使用して AL (アセンブリ リンカー) タスクを呼び出したいと思います。i = 1, ..., x(他のすべてのパラメータは明示的に認識されているため、直接入力できます)。

MSBuild の経験はあまりありません。1 つのファイルのビルド後のターゲットで AL タスクを実行する方法と、構成ファイル名のリストをリストに取得する方法を見つけ、バッチ処理を使用してそのリストをループできると思いますが、ソースファイル名からターゲットファイル名を生成する際にmがスタックしました。

(注: これは msbuild 3.5 であるため、4.0 にあるように見えるため、文字列操作はないようです。また、ネットから追加のライブラリをインストールすることは、私にとってオプションではありません。)

助言がありますか?おそらく、そのようなアプローチは MSBuild にはあまり適しておらず、これを行う適切な方法がわかりません。構成ファイルはプログラムで生成されます。おそらく、これらに加えて、処理する一連のファイルを作成し、それぞれに al の入力名と出力名を含め、これらを MSBuild で読み取らせますか?

4

2 に答える 2

2

アセンブリ ファイル名のリストを作成するだけの場合は、構成ファイル名をまとめてアイテム グループに作成します。

<ItemGroup>
    <ConfigFiles Include="Path\to\Policy.*.config" />
    <Assemblies Include="%(ConfigFiles.Filename).dll" />
</ItemGroup>

Assemblies項目グループには次が含まれます

Policy.1.1.mylib.dll
Policy.1.2.mylib.dll
...
Policy.1.x.mylib.dll
于 2012-06-12T18:48:58.763 に答える
1

構成をItemGroupでグループ化すると、 foreach のようなループや dll 名の再作成のためにメタデータにアクセスできるようになります。<Task Input="%(Configs.FullName)" Output="%(Configs.RelativeDir)\%(Configs.Filename).dll" />

于 2012-06-12T17:07:37.560 に答える