<AL></AL>MSBuild のタスクを実行してパブリッシャー ポリシーを作成したいと考えています。この目的のために、私のcsprojファイルで、構成ファイル名のリストを作成します。
<Target Name="AfterBuild">
<ItemGroup>
<ConfigFiles Include="$(TargetDir)\*.config" />
</ItemGroup>
<AL
LinkResources="%(ConfigFiles.Identity)"
Platform="x86"
KeyFile="$(ProjectDir)\KeyFile.snk"
OutputAssembly="$(TargetDir)\%(ConfigFiles.Filename).dll"
Version="@(PolicyVersion)"
/>
</Target>
バージョン番号が 1 つしか必要ない場合、これは問題なく動作します"@(PolicyVersion"。しかし、構成ファイルごとに異なるバージョン番号が必要な場合はどうでしょうか? 構成ファイルの XML 属性からバージョン番号を取得できましたが、その方法がわからないため、バッチ ビルド中に対応する正しい項目で使用できます。
また、次のことも試しました。構成ファイルの名前はPolicy.2.2xx.Mylib.config. これらはプログラムで作成されます。Policy.2.2xx.Mylib.verさらに、MyLib.verバージョン情報を保持するファイルを作成しました(これは、それぞれMylibで同じですが、他のライブラリでは異なる場合があります)。これを使用して読み取ることができます
<ReadLinesFromFile File="$(TargetDir)\MyLib.ver">
<Output TaskParameter="Lines" ItemName="PolicyVersion" />
</ReadLinesFromFile>
MyLibしかし、どうすれば(または) のバージョン情報をタスクPolicy.2.2xx.Mylib内の対応する構成ファイルに関連付けることができますか? 読み取りのよう<AL>に使用しようとしました-タスクのようにこの情報にアクセスできることを望んでいました。したがって、同じmsbatchループを参照していますが、これは機能しません。ドットはアイテム名に違法です。"%(ConfigFies.identity).ver"ItemName"$("%(ConfigFiles.identity).ver")"AL
おそらく、他の 2 つのアイテム グループから新しいアイテム グループを作成するのと同じくらい簡単ですが、これを行うには、この MS ビルド モンスターの経験が十分ではありません。どんな助けでも大歓迎です。
(私はVS 2008を使用していることに注意してください)。