2009-10-05 90 views
1

我有一個構建腳本運行成功,但我很難在aspnet_compiler完成後運行任何東西。我想使用robocopy將項目複製到另一個文件夾。如果我將複製任務放在編譯器的上面(如下所示),我會將消息傳給控制檯,但如果在編譯之後放置它,則不會看到。我錯過了什麼嗎?我是否需要檢查編譯器的返回代碼以在完成後調用任務?NAnt和ASP.NET編譯器

<target name="copy" depends="init"> 
    <echo message="This is my message for robocopy..."/> 
</target> 

<target name="compile" depends="copy"> 
    <exec program="${msbuild.exe}" 
      commandline='MySolution.sln /p:Configuration=${Configuration};OutDir="${build.dir}\\"' /> 
</target> 

<target name="precompile-web" depends="compile"> 
    <exec program="${aspnet_compiler.exe}" 
     commandline='-v /MyProj-p "${build.dir}"\_PublishedWebsites\MyProj.Web' 
     /> 

是的,當/如果我搬到低於預編譯的Web副本任務,我改變取決於=「預編譯的Web」和編譯任務依賴於「初始化」。

回答

1

如果我理解你正確地在這裏,你想:

  1. 將文件複製
  2. 編譯他們使用的MSBuild
  3. 預編譯他們的網絡

是這樣嗎?我本來以爲你會想這樣做,周圍是這樣的:

  1. 使用的MSBuild
  2. 預編譯他們的網絡
  3. 將文件複製其他地方(供IIS等)編譯的文件

如果我的方法是正確的,那麼我猜你會想要你的目標引用彼此這樣?

<target name="compile-and-publish" depends="compile,precompile-web,copy" /> 

<target name="compile"> 
    <exec program="${msbuild.exe}" commandline='MySolution.sln /p:Configuration=${Configuration};OutDir="${build.dir}\\"' /> 
</target> 

<target name="precompile-web"> 
    <exec program="${aspnet_compiler.exe}" commandline='-v /MyProj-p "${build.dir}"\_PublishedWebsites\MyProj.Web' /> 
</target> 

<target name="copy" depends="init"> 
    <echo message="This is my message for robocopy..."/> 
</target> 

這樣一來,你不是釘住您的每一個目標直至依賴於其他目標(再利用),但你得到你需要實現手頭的工作秩序。

對你有好處嗎?

+0

是的,我想完成你所設想的第二套命令。問題在於我讓他們開火的順序。謝謝。 – 2010-02-22 15:01:32