2009-06-10 7 views
0

IronPython에서 SharpDevelop 3.1 (IronPython 2.0.0)을 사용하여 MSBuild 사용자 지정 작업을 작성하려고합니다.IronPython/SharpDevelop 3.1의 MSBuild 사용자 지정 작업

사용자 지정 작업을 작성하려면 클래스가 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은 작업이 없다고 알려줍니다. –

+0

안녕하세요, 반사경을 통해 DLL을 실행하고 내부 내용을 확인하는 것이 좋습니다. – Rohit

답변

0

나는 수업을 공개하지 않기를 기대합니다.

관련 문제