我想运行<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>
如果我只需要一个版本号,这可以很好地工作"@(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>
?我尝试在阅读中使用"%(ConfigFies.identity).ver"
as ItemName
- 我希望我可以像"$("%(ConfigFiles.identity).ver")"
在AL
taks 中一样访问此信息,因此引用相同的 msbatch 循环,但这不起作用,因为点在项目名称中是非法的。
这可能就像从另外两个项目组中创建一个新项目组一样简单,但是到目前为止,我对这个 MS Build 怪物的经验还不够,无法完成这项工作。任何帮助将不胜感激。
(请注意,我使用的是 VS 2008)。