Я пытаюсь создать пользовательскую задачу MSBuild в IronPython, используя SharpDevelop 3.1 (IronPython 2.0.0).
Чтобы создать пользовательскую задачу, класс должен реализовать интерфейс 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, чтобы попытаться создать файл MSBuild, который использует элемент «UsingTask» для ссылки на получающуюся DLL, он жалуется, что DLL не содержит никаких задач.
Я предполагаю, что проблема связана с неполной реализацией интерфейса с моей стороны (скорее всего, со свойствами, поскольку я имитирую их с атрибутами) или с проблемой версии (IronPython 2.0 против 2.1 в посте). Какой-нибудь опыт или совет, который будет предложен?