私が見つけたハックのビットは、基本的にあなたのタスクに名前空間接頭辞を与えているようです。
[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