在NAnt中MSBuild的XmlMassUpdate任务?

时间:2010-03-19 15:09:58

标签: msbuild nant msbuild-task nant-task

我已经创建了一个用于构建项目的MSBuild任务,但出于各种原因,我不想切换到NAnt。

是否有一些任务与NAnt中的MSBuild的XmlMassUpdate等效?如果可能的话,我想使用与XmlMassUpdate一样的xml替换文件。

(有关XmlMassUpdate的更多信息,这是我在stackoverflow网站上找到的一个简短用法:MSBuild example

我尝试使用xmlPeek / xmlPoke任务但无法让它们迭代替换文件中的树路径...

2 个答案:

答案 0 :(得分:0)

事实证明,我只需要将tigris实现中的代码调整为适用于NAnt的代码。

解决方案有点长,所以将它全部发布在这里是没有意义的,但这些都是步骤......

Tigris MsBuildTasks site包含每个任务的二进制文件和源代码。

只需找到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中,你可以使用它...享受

答案 1 :(得分:0)

在Nant中复制文件时,可以展开文件中的属性。 您可以创建一个模板文件,而不必为每个属性编写不同的更新。 ...

        <fileset basedir="${config.dir}\NantTemplates">
            <include name="**\*" />
            <exclude name="*.template"/>                
        </fileset>
        <filterchain>
            <expandproperties/>
        </filterchain>