2010-07-08 2 views
0

사용자 지정 Microsoft.Build.Utilities.Task를 만드는 컨텍스트에서 MSBuild 자세한 정보에 액세스하려면 어떻게합니까?사용자 지정 작업을 만들 때 MSBuild 세부 정보에 액세스하는 방법?

Microsoft.Build.Utilities.Task : http://msdn.microsoft.com/en-us/library/microsoft.build.utilities.task.aspx

은 MSBuild의 상세 : http://blogs.msdn.com/b/saraford/archive/2008/10/07/did-you-know-you-can-configure-the-msbuild-verbosity-in-the-output-window-329.aspx

답변

1

내가 그런 식으로 작동합니다 생각하지 않습니다. Task.BuildEngine 속성을 통해 빌드 엔진에 대한 참조를 얻습니다. 그런 다음 LogMessageEvent를 호출하여 메시지를 생성하십시오. BuildMessageEventArgs.Importance는 자세한 설정에 따라 메시지를 실제로 볼 수 있는지 여부를 결정합니다. 이것은 다른 로깅 API와 일치합니다.

0

디자인 결정 (빌드가 상세를 볼 수 없습니다) 뒤에 추론은 다음

(1) 빌드 프로세스는 사용자 (그녀가 선택한 로거) 원하는 가정해서는 안된다. 그들은 반드시 같은 사람이 소유하지 않아도됩니다. 작업에서 자세한 정보를 알고 진단 정보를 표시하는 특정 정보 만 기록하는 빌드로 이동하는 것이 좋습니다. 콘솔에서 조용하게 자세하게 빌드하고 모든 것을 기록하는 데이터베이스 로거를 연결하려고합니다. 조용한 자세한 정보를 볼 수 있기 때문에 작업에서 이벤트가 발생하지 않았기 때문에 작업을 수행 할 수 없습니다.

(2) 중요성 및 자세한 내용은 혼란 스러울 수 있습니다. 중요성은 특정 로버 스트와 함께 로거가 이벤트와 관련하여 어떤 작업을 수행 할 것인지에 대한 빌드 프로세스의 힌트입니다. 이들은 별도의 영역에 존재합니다. 작업 및 빌드 프로세스의 중요성, 로거에서만 자세한 표시.

(3) 자세한 표시 자체 (예 :/verbosity)는 단지 기본값입니다. 로거를 사용하면 일반적으로 특정 로버 스트를 지정할 수 있습니다. 예를 들어,/fileloggerparameters : verbosity = detailed. 어떤 작업을해야합니까? 몇 가지가있을 수 있습니다.

다시 말하면, 이것을 재검토해야 할 한 가지 이유가 있습니다. 왜냐하면 진단을 위해 합리적으로 수행 할 수있는 Log 객체에서 많은 이벤트를 발생시키는 것이 로거에 의해 버려지는 더 낮은 자세한 표시에서도 빌드 성능에 큰 영향을 줄 수 있기 때문입니다. 이 문제를 해결하기 위해서는 아마도 빌드 프로세스가 미친 듯이 로그하는 것이 안전 할 수있는 "슈퍼 세부 정보 표시"모드인지 여부를 최소한 알 수 있어야합니다.

궁극적으로 중요한 것은 귀하의 직업을 얻는 것입니다. 어쩌면이 모든 멋진 것들이 너무 복잡한 것들이었을 것입니다.

단년 내가 이것을 디자인하는 데 도움이되었습니다.