<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を使用していることに注意してください)。