5

我们使用 CI 服务器 (Jenkins) 编译 ASP.NET 项目并部署到我们的 Web 服务器。

我想在部署之前预编译站点以提高性能,因此我PrecompileBeforePublish在发布配置文件 (.pubxml) 中设置了该属性。

但是,当 Jenkins 运行构建时,AspNetPreCompile任务失败并出现以下错误:

AspNetPreCompile:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe
-v /
-pc:\jenkins\workspace\DeployJob\MyProject\obj\Release\AspnetCompileMerge\Source
-c
c:\jenkins\workspace \DeployJob\MyProject\obj\Release\AspnetCompileMerge\TempBuildDir

ASPNETCOMPILER:错误 ASPRUNTIME:当前身份 (JenkinsUser) 没有对“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files”的写入权限。

请注意,这不是将网站部署到的机器,它只是一个构建服务器。我可以授予当前身份 (JenkinsUser) 对Temporary ASP.NET Files 文件夹的访问权限,但我宁愿不必在只是充当愚蠢的 Jenkins 从属的盒子上弄乱文件系统权限。

有没有办法解决?为什么 aspnet_compiler 试图将站点写入Temporary ASP.NET Files 文件夹,有没有办法让它使用不同的临时目录,例如%TEMP%

4

1 回答 1

4

我想你可以玩这个:

  <AspNetCompiler ToolPath="C:\Windows\Microsoft.NET\Framework\v2.0.50727"  VirtualPath="temp"  PhysicalPath="$(ProjectDir)\..\Web" /> 

但是你必须给 ~some directory 权限。

它只是那些“与它共存”的事情之一.........我设置 CI 机器的说明文档具有“授予 asp.net 目录的权限”,正如您所解释的那样。

于 2013-10-25T15:24:41.427 回答