不管是好是坏,我已经构建了自己的msbuild任务。我给它命名为'msbuild‘,它与NAntContrib中的一个冲突。
假设我不能从NAntContrib中删除它,有没有一种方法可以在保持任务名称不变的同时覆盖contrib版本?
或者,也许可以编写另一个任务,将已经加载的任务命名为其他名称?
或者我可以更改我的任务名称。
任何信息都将不胜感激。
发布于 2013-01-05 23:43:45
我发现的一个小技巧似乎很有效,那就是给你的任务一个命名空间前缀。
[TaskName("zz:msbuild")]
public class MsbuildTask : ExternalProgramBase
{
}然后在您的nant构建文件中:
<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
发布于 2011-09-21 03:09:08
我还没有看到可以重载任务名称的方法。听起来最简单的做法是将任务的名称更改为非msbuild的名称。
https://stackoverflow.com/questions/7451185
复制相似问题