为什么aspnet_compiler需要在我的构建服务器上Temporary ASP.NET Files文件夹中具有写访问权限?

5
我们使用CI服务器(Jenkins)编译ASP.NET项目并部署到我们的Web服务器上。
我想在部署之前预编译站点以提高性能,因此我在发布配置文件(.pubxml)中设置了PrecompileBeforePublish属性。
但是,当Jenkins运行构建时,AspNetPreCompile任务会失败,并显示以下错误:
AspNetPreCompile: C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_compiler.exe -v / -p c:\ 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”没有写访问权限。
请注意,这不是Web站点将部署到的计算机,它只是一个构建服务器。我可以授予当前标识(JenkinsUser)访问Temporary ASP.NET文件夹的权限,但我不想在只充当愚笨Jenkins从属的盒子上搞乱文件系统权限。
有什么解决方法吗?为什么aspnet_compiler尝试将站点写入Temporary ASP.NET文件夹,是否有任何方法使其使用其他临时目录,如%TEMP%?

除了放置一个ntfs联接外,我不知道有什么方法可以重定向这个默认行为,也不知道如何在不更改机器上的标准ASP.NET行为的情况下进行重定向。 - jessehouwing
1个回答

4
我猜您可以试着玩一下这个:

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

但是你需要给某个目录授予权限。

这只是其中的一个“必须接受”的事情......我关于设置CI机器的指令文档中有“像你解释的那样给asp.net目录赋予权限”的步骤。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接