1

我试图弄清楚如何使用 MSBuild 从一组配置文件中创建一组 dll。也就是说,我有一些配置文件

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

在 msbuild 目标中,我想使用这些文件的列表调用 AL(程序集链接器)任务,并从相应的配置文件参数动态生成Outputfile 参数值(Policy.1.i.mylib.dll对于每个)。i = 1, ..., x(所有其他参数我都明确知道,所以我可以直接输入它们)。

我对 MSBuild 没有太多经验。我想出了如何在一个文件的后期构建目标中运行 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 回答