2013-03-20 53 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 

我获得以下错误:

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() 

当我不使用<record>任务,它给像另一个错误,无法附加txt文件。 bcoz被另一个进程使用。

为什么我会收到此错误?

+0

我认为'** Mightymuke 2013-03-21 03:50:04

+0

对。它是一个错误的问题。 – 2013-03-21 16:31:17

+0

我想你看到''的同样的问题,我认为这是错误的路要走。而不是记录,你可以尝试[复制](http://nant.sourceforge.net/release/0.85-rc2/help/tasks/copy.html)该文件,然后附上副本,或确定为什么'c:\ foo \ log.txt'仍在使用中,并停止已打开的进程? – Mightymuke 2013-03-23 07:52:57

回答

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,我将它复制到文本文件并能够附加到电子邮件。没有任何错误。感谢所有的帮助 – 2013-04-09 18:00:54

+0

好,MSbuild为你工作。我想我做了冲洗,复制,然后发送电子邮件 – dekdev 2013-04-09 18:35:48

0

确保该文件之前关闭你尝试给它发电子邮件。