我们有一个项目,其中.js和.css文件被YUI压缩程序压缩。一个非常好的工具。我们还使用TFS 2010作为构建服务器,每晚构建也部署到我们的开发网站。YUI压缩机和TFS Build
我们遇到的问题是文件YUI生成导致“访问被拒绝”的问题。这是因为之前已经生成过这样的文件,并且它是项目的一部分,使其成为只读文件。但是,我们可以将其从项目中删除,并且它应该创建好。问题在于生成的文件不包含在实际的部署包中。
本地我没有问题,因为我有一个预生成事件命令脚本,它删除了现有的文件。这显然不能在构建服务器上工作。也许tfs上下文用户缺乏权限,我不知道。
有没有人可能有类似的问题?
更新21/11: 这个问题可能有点模糊。为了简化,让刚刚说我想因为它在本地做这个工作:
IF NOT $(ConfigurationName) == DEBUG DEL "$(ProjectDir)Styles\styles.min.css
IF NOT $(ConfigurationName) == DEBUG DEL "$(ProjectDir)JavaScript\script.min.js
这是在预生成命令事件行规定,在项目属性 - >生成事件。
脚本在YUI文件生成之前删除文件,因此没有要覆盖的文件。这么简单,执行TFS-build的用户上下文有没有足够的修改权限?
SOLUTION:
我们结束了在预生成事件下面的代码:
attrib -r "$(ProjectDir)Styles\styles.min.css"
attrib -r "$(ProjectDir)JavaScript\script.min.js"
IF NOT $(ConfigurationName) == Debug $(MSBuildBinPath)\msbuild.exe "$(ProjectDir)Config\MSBuild\BuildSettings.xml"
/马蒂亚斯
我认为你的第一步是阅读TFS编译日志文件,看看你的预编译任务是否正在运行。考虑在prebuild事件脚本中添加'attrib -r'以关闭将生成的文件的只读标志。 –
我仍然不明白你的问题......你想知道为什么预构建步骤不能在TFS构建服务器上运行? –
我想知道如何解决自动生成文件作为构建的一部分,当文件已经存在(和只读)的问题。也许我们会采用相同的技术,使用预生成事件将其全部删除。 – GarethOwen