2010-03-19 3 views
1

프로젝트를 빌드하기위한 MSBuild 작업을 만들었지 만, 여러 가지 이유 때문에 NAnt로 전환 할 필요가 없습니다.NAnt에서 MSBuild의 XmlMassUpdate 작업을 하시겠습니까?

NAnt에서 MSBuild의 XmlMassUpdate와 동일한 작업이 있습니까? 가능한 경우 XmlMassUpdate와 함께 사용 된 동일한 XML 대체 파일을 사용하고 싶습니다.

은 (XmlMassUpdate에 대한 자세한 정보를 원하시면, 여기에 내가 유래의 사이트에서 발견 된 짧은 사용의 : MSBuild example)

내가 xmlPeek/xmlPoke 작업을 시도했지만 그들을 대체 파일의 트리 경로를 반복 할 수 없었다. ..

답변

0

코드가 tigris의 구현에서 NAnt에서 작동하도록 조정해야한다는 것이 밝혀졌습니다. 그것이 전부 여기에 게시 이해가되지 않지만, 이러한 단계가 될 것이다, 그래서

이 솔루션은

Tigris MsBuildTasks site

은 바이너리 모든 작업에 대한 소스 코드를 모두 가지고 ... 조금 lengthly이다.

그냥, 그것을 어떻게하는지보고, 같은, 당신의 태스크 라이브러리에은 NAnt 작업 클래스를 만들 XmlMassUpdate의 구현을 찾을 :

[TaskName("XmlMassUpdate")] 
public class XmlMassUpdate : Task 
{ 
    [TaskAttribute("ContentFile", Required=true)] 
    public string ContentFile { get; set; } 
    //... 
    protected override void ExecuteTask() 
    { 
     // ... 
    } 
    //other methods 
} 

무엇 나머지의 것은 NANT의 bin에 라이브러리 DLL을 복사하는 것입니다 그리고 당신은 할 수 그것을 사용하십시오 ... enjoy

0

Nant에서 파일을 복사 할 때 파일 내에서 속성을 확장 할 수 있습니다. 각 속성마다 다른 업데이트를 작성하는 대신, 내부에 vars가없는 템플릿 파일을 만들 수 있습니다. ...

 <fileset basedir="${config.dir}\NantTemplates"> 
      <include name="**\*" /> 
      <exclude name="*.template"/>     
     </fileset> 
     <filterchain> 
      <expandproperties/> 
     </filterchain>