2013-03-20 4 views
0

전자 메일에 로그 파일을 첨부하려고합니다.Nantcontrib <record> 작업

내 코드는 다음과 같습니다

**<loadtasks assembly=".../tasks.dll" /> 
<record name="c:foo\log.txt" action="Start" /> 
<target name="email"> 
<mail 
     from="[email protected]" 
     tolist="[email protected]" 
     subject="Build" 
     message="Build Failed" 
     mailhost="smtp.anywhere.net"> 
     <files> 
     <include name="c:foo\log.txt" /> 
     </files> 
     <attachment> 
     <include name="c:foo\log.txt" /> 
     </attachment> 
    </mail> 
</target> 
<record name="c:foo\log.txt" action="Close" />** 

내 명령은 다음과 같습니다 나는 다음과 같은 얻을

nant -f:filename.build email -l:c:foo\log.txt 

오류 : 내가 <record> 작업을 사용 해달라고하면

System.Security.SecurityException: Request for the permission of type 'System.Se 
curity.Permissions.FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089' failed. 
    at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMa 
rk& stackMark, Boolean isPermSet) 
    at System.Security.CodeAccessPermission.Demand() 
    at System.IO.FileSystemInfo.get_FullName() 
    at NAnt.Contrib.Tasks.RecordTask.ExecuteTask() 
    at NAnt.Core.Task.Execute() 
    at NAnt.Core.Project.InitializeProjectDocument(XmlDocument doc) 
    at NAnt.Core.Project.Execute() 
    at NAnt.Core.Project.Run() 

이 같은 또 다른 오류를 제공, txt 파일을 첨부 할 수 없습니다. bcoz 다른 프로세스에서 사용 중입니다.

왜이 오류가 발생합니까?

+0
+0

오른쪽. 그 질문에 오타가 있습니다. –

+0

''과 같은 문제가 발생한다고 생각합니다. 잘못된 길로 생각합니다. 대신에 레코드 대신에 파일을 복사하거나 (http://nant.sourceforge.net/release/0.85-rc2/help/tasks/copy.html) 복사본을 첨부하거나, 왜 c : foo \ log.txt'가 아직 사용 중이며 열려있는 프로세스를 중지하고 있습니까? – Mightymuke

답변

0

난, 그냥 다음 이메일에 첨부 할 파일을 복사 이메일을 보내기 전에, 기록 작업에 플러시 같은 것을 할이 해결 방법은

<echo>${emailsubject}</echo>  
    <echo>Sending Email</echo> 
    <echo>Attaching File : ${build.log.dir}/email_${build.log.filename}</echo> 
    <echo>Attaching File : ${path.vsshelper.log}/logs/email_${build.log.getlistoffiles}</echo> 

    <record name="${build.log.dir}/${build.log.filename}"  action="Flush" level="Verbose"/> 
    <sleep milliseconds="5000" /> 
    <copy file= "${build.log.dir}/${build.log.filename}" tofile="${build.log.dir}/email_${build.log.filename}" /> 
    <copy file= "${path.vsshelper.log}/logs/${build.log.getlistoffiles}" tofile="${path.vsshelper.log}/logs/email_${build.log.getlistoffiles}" />   
+0

작업과 관련하여 여전히 오류가 발생합니다. nantconritb tasl.dll을로드 중입니다. 나는 뭔가가 있다고 생각하는데, 나는 실종되었다. 하지만 msbuild를 사용하여 작동시키고 있습니다. msbuild 명령 "/ flp :"EX :/flp : erroronly; logfile = msbuild.err을 사용하여 텍스트 파일에 복사하고 전자 메일에 첨부 할 수 있습니다. 어떤 오류도없이. 덕분에 모두 당신의 도움을 –

+0

좋은 MSbuild는 당신을 위해 일했다. 내가 플러시하고, 복사 한 다음 이메일을 보낸 것 같아. – dekdev

0

파일이 전에 닫혀 있는지 확인 작동 희망 당신은 이메일을 보내려고합니다.