我创建了一个 MSBuild 任务来构建我的项目,但由于各种原因,我不想切换到 NAnt。
是否有一些任务相当于 NAnt 中的 MSBuild 的 XmlMassUpdate?如果可能的话,我想使用与 XmlMassUpdate 相同的 xml 替换文件。
(有关 XmlMassUpdate 的更多信息,这是我在 stackoverflow 网站上找到的简短用法:MSBuild 示例)
我尝试使用 xmlPeek/xmlPoke 任务,但无法让它们在替换文件中迭代树路径...
我创建了一个 MSBuild 任务来构建我的项目,但由于各种原因,我不想切换到 NAnt。
是否有一些任务相当于 NAnt 中的 MSBuild 的 XmlMassUpdate?如果可能的话,我想使用与 XmlMassUpdate 相同的 xml 替换文件。
(有关 XmlMassUpdate 的更多信息,这是我在 stackoverflow 网站上找到的简短用法:MSBuild 示例)
我尝试使用 xmlPeek/xmlPoke 任务,但无法让它们在替换文件中迭代树路径...
事实证明,我只需要将代码从 tigris 的实现调整为适用于 NAnt 的代码。
该解决方案有点冗长,因此将其全部发布在这里没有意义,但这些将是步骤......
Tigris MsBuildTasks 站点包含每个任务的二进制文件和源代码。
只需找到 XmlMassUpdate 的实现,看看它是如何完成的,然后在您的任务库中创建 NAnt 任务类,如下所示:
[TaskName("XmlMassUpdate")]
public class XmlMassUpdate : Task
{
[TaskAttribute("ContentFile", Required=true)]
public string ContentFile { get; set; }
//...
protected override void ExecuteTask()
{
// ...
}
//other methods
}
剩下的就是将你的库 dll 复制到 nant 的 bin 中,你就可以使用它了……享受
当您在 Nant 中复制文件时,您可以在文件中展开属性。不必为每个属性编写不同的更新,您可以创建一个模板文件,其中包含您的 nant vars。...
<fileset basedir="${config.dir}\NantTemplates">
<include name="**\*" />
<exclude name="*.template"/>
</fileset>
<filterchain>
<expandproperties/>
</filterchain>