2009-06-10 71 views
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後)。任何經驗或建議要提供?

+0

經過進一步閱讀,我確定通過繼承Microsoft.Build.Utilities.Task類來製作自定義任務更容易。這允許您只覆蓋Execute方法而不用擔心屬性。但是,仍然沒有骰子與生成的DLL。 MSBuild Sidekick告訴我它沒有任何任務。 – 2009-06-11 17:18:45

回答

0

我希望你沒有公開這個課程。

相關問題