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