0
我试图在IronPython中使用SharpDevelop 3.1(IronPython 2.0.0)构建一个MSBuild自定义任务。IronPython中的MSBuild自定义任务/ SharpDevelop 3.1
为了构建自定义任务,该类需要实现Microsoft.Build.Framework.ITask接口。根据this post,您可以通过继承它来实现.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不包含任何任务。
我猜这个问题要么是由于我的部分不完善的接口实现(最有可能的属性,因为我假装他们的属性)或版本问题(IronPython 2.0与2.1后)。任何经验或建议要提供?
经过进一步阅读,我确定通过继承Microsoft.Build.Utilities.Task类来制作自定义任务更容易。这允许您只覆盖Execute方法而不用担心属性。但是,仍然没有骰子与生成的DLL。 MSBuild Sidekick告诉我它没有任何任务。 – 2009-06-11 17:18:45