【问题标题】:Why does aspnet_compiler need write access to the Temporary ASP.NET Files folder on my build server?为什么 aspnet_compiler 需要对我的构建服务器上的 Temporary ASP.NET Files 文件夹进行写访问?
【发布时间】:2013-11-03 10:15:59
【问题描述】:

我们使用 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 文件”。

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

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

【问题讨论】:

  • 不知道为什么,但这是默认行为。除了放置一个 ntfs 连接之外,不知道如何在不改变机器上标准 ASP.NET 行为的情况下重定向它。

标签: msbuild aspnet-compiler microsoft-web-deploy


【解决方案1】:

我猜你可以玩这个:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2012-02-26
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 2023-03-12
    相关资源
    最近更新 更多