2011-11-17 90 views
8

我们有一个项目,其中.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" 

/马蒂亚斯

+0

我认为你的第一步是阅读TFS编译日志文件,看看你的预编译任务是否正在运行。考虑在prebuild事件脚本中添加'attrib -r'以关闭将生成的文件的只读标志。 –

+0

我仍然不明白你的问题......你想知道为什么预构建步骤不能在TFS构建服务器上运行? –

+0

我想知道如何解决自动生成文件作为构建的一部分,当文件已经存在(和只读)的问题。也许我们会采用相同的技术,使用预生成事件将其全部删除。 – GarethOwen

回答

4

如果文件是项目的一部分,并从下载TFS存储库,首先总是删除只读标志,如果你需要对它们进行任何处理,例如删除。因此,在你的脚本,首先做:

attrib -r *.js 
attrib -r *.css 

应能后细删除它们。这可能不是权限问题,因为用于下载文件的帐户也是用于删除它们的帐户。

+0

工作就像一个魅力。谢谢! – Mattias