1

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

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

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

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

4

2 回答 2

0

事实证明,我只需要将代码从 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 中,你就可以使用它了……享受

于 2010-03-25T21:16:58.627 回答
0

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

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

于 2011-02-10T16:49:15.373 回答