Cruise control ASPNETCOMPILER:错误ASPRUNTIME:预编译目标目录

时间:2013-01-15 07:15:16

标签: msbuild cruisecontrol.net clearcase

当我尝试通过CruiseControl和MSBuild版本4构建解决方案文件时,我收到以下错误

ASPNETCOMPILER : error ASPRUNTIME: The precompilation target directory

它来自哪里以及如何避免它?

3 个答案:

答案 0 :(得分:5)

您需要仔细检查预编译目录位置。

您需要:

  • 删除其内容(如“ASPNETCOMPILER : error ASPRUNTIME: Target Directory not empty”)
  • 检查其路径(解决方案文件中的Debug.AspNetCompiler.TargetPathRelease.AspNetCompiler.TargetPath)是否可写(例如,您无法在ClearCase中的动态视图的根目录中写入:M:\MyView
  • 检查Cruise Control是否可以访问您的视图(特别是如果它是动态视图)

如“Trying to Build and Publish Asp.net website from command line using aspnet_compiler”所示,错误消息通常更完整,类似于:

Error: error ASPRUNTIME: The precompilation target directory
(c:\Inetpub\wwwroot\WebsiteOne) 
cannot be in the same tree as the source application directory 
(c:\inetpub\wwwroot\WebsiteOne).

来自博文“Getting Started with CruiseControl.NET”:

  

对于Web解决方案,请将应用程序的TargetPath和/或Debug版本的Release更新为源应用程序目录之外。
  否则,您将收到以下错误:

ASPNETCOMPILER : error ASPRUNTIME: The precompilation target directory cannot be in the same tree as the source application directory.
  

这可以通过修改解决方案文件中的以下内容来完成:

Debug.AspNetCompiler.TargetPath = “c:\ccnet\PrecompiledWeb\SampleWeb\”
Release.AspNetCompiler.TargetPath = “c:\ccnet\PrecompiledWeb\SampleWeb\”
  

备选方案,可以更新应用程序MSBuild属性中找到的输出位置。

     

您可能想知道为什么更新的解决方案不会使用下一个计划的构建进行更新。当它成功(并且有意义)时,只有应用于源代码控制的更改会被拉到构建框中。

答案 1 :(得分:1)

我已通过以下更改解决了问题:

Debug.AspNetCompiler.TargetPath = “c:\ccnet\PrecompiledWeb\SampleWeb\”
Release.AspNetCompiler.TargetPath = “c:\ccnet\PrecompiledWeb\SampleWeb\”

答案 2 :(得分:0)

右键单击解决方案资源管理器中的Project 选择属性页面 选择对话框左侧的MSBuild Options 更改OutputFolder的路径 - 确保您的路径不属于同一路径树