IronPython/SharpDevelop 3.1中的MSBuild自定义任务

IronPython/SharpDevelop 3.1中的MSBuild自定义任务,msbuild,ironpython,Msbuild,Ironpython,我正在尝试使用SharpDevelop 3.1 IronPython 2.0.0在IronPython中构建MSBuild自定义任务 为了生成自定义任务,该类需要实现Microsoft.build.Framework.ITask接口。根据,您可以通过继承来实现.NET接口 ITask接口定义了两个属性,BuildEngine和HostObject,以及一个Execute方法。execute方法不接受任何参数并返回布尔值 我已经在解决方案中使用适当的引用编写了以下代码: import Micros

我正在尝试使用SharpDevelop 3.1 IronPython 2.0.0在IronPython中构建MSBuild自定义任务

为了生成自定义任务,该类需要实现Microsoft.build.Framework.ITask接口。根据,您可以通过继承来实现.NET接口

ITask接口定义了两个属性,BuildEngine和HostObject,以及一个Execute方法。execute方法不接受任何参数并返回布尔值

我已经在解决方案中使用适当的引用编写了以下代码:

import Microsoft.Build.Framework as mbf
import Microsoft.Build.Utilities as mbu

class CustomTask(mbf.ITask):
    '''
    Print a message to the log.
    '''
    def __init__(self):
        self.BuildEngine    =   None
        self.HostObject     =   None

    def Execute():
        log     =   mbu.TaskLoggingHelper(self)
        log.LogMessageFromText('This is a test.', mbu.MessageImportance.High)
        return True
代码生成时没有错误。当我使用MSBuild Sidekick尝试生成使用UsingTask元素引用结果dll的MSBuild文件时,它会抱怨dll不包含任何任务


我猜问题要么是我的接口实现不完整,最有可能是属性,因为我用属性来伪装它们,要么是Python2.0与2.1版本的问题。有什么经验或建议吗?

进一步阅读后,我决定通过继承Microsoft.Build.Utilities.task类来创建自定义任务更容易。这允许您只重写Execute方法,而不必担心属性。但是,仍然无法使用生成的DLL。MSBuild Sidekick告诉我其中没有任务。嗨,为什么不通过reflector运行DLL,看看里面有什么。