首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否覆盖NAnt中的重复任务?

是否覆盖NAnt中的重复任务?
EN

Stack Overflow用户
提问于 2011-09-17 06:59:41
回答 2查看 276关注 0票数 0

不管是好是坏,我已经构建了自己的msbuild任务。我给它命名为'msbuild‘,它与NAntContrib中的一个冲突。

假设我不能从NAntContrib中删除它,有没有一种方法可以在保持任务名称不变的同时覆盖contrib版本?

或者,也许可以编写另一个任务,将已经加载的任务命名为其他名称?

或者我可以更改我的任务名称。

任何信息都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-05 23:43:45

我发现的一个小技巧似乎很有效,那就是给你的任务一个命名空间前缀。

代码语言:javascript
复制
[TaskName("zz:msbuild")]
public class MsbuildTask : ExternalProgramBase
{
}

然后在您的nant构建文件中:

代码语言:javascript
复制
<project default="Build" name="TestBuild"
    xmlns="http://nant.sf.net/schemas/nant-0.85.win32.net-1.0.xsd"
    xmlns:zz="http://nant.sf.net/schemas/nant-0.85.win32.net-1.0.xsd">
    <target name="Build">
        <zz:msbuild target="Build" project="TestBuild.sln"
            verbosity="${msbuild.verbosity}">
            <property name="Configuration" value="${build.configuration}" />
        </zz:msbuild>
    </target>
</project>

我唯一不喜欢的是我必须在TaskNameAttribute中嵌入前缀。这是必要的,因为NAnt在内部使用字符串"zz:msbuild“来散列任务,并根据XmlNode.Name属性进行查找。

另请注意,前缀指向默认名称空间。这是因为NAnt会丢弃名称空间不是默认NAnt名称空间的节点。我可以理解他们为什么这样做,但我不知道这是否绝对必要。

看一下NAnt源代码,进行调整似乎非常可行,这样我就不必嵌入前缀并为任务提供不同的名称空间。

我之前一直使用的这种方法的替代方法是使用任务名称,如"zz.msbuild“。但这似乎并不是真的正确。我记得在某处读到,不推荐在元素名称中使用句点。但更重要的是,它看起来并不好:P

票数 0
EN

Stack Overflow用户

发布于 2011-09-21 03:09:08

我还没有看到可以重载任务名称的方法。听起来最简单的做法是将任务的名称更改为非msbuild的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7451185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档