我们有一个项目,其中使用YUI Compressor压缩.js和.css文件。一个很好的工具。我们还将TFS 2010用作具有每晚构建的构建服务器,该构建服务器也部署到我们的开发人员网站上。
我们遇到的问题是,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生成的用户上下文具有足够的修改权限,就这么简单吗?
解决方案:
我们在预构建事件中获得了以下代码:
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存储库下载,则在需要对文件进行任何处理(例如删除)时,请始终先删除te只读标志。因此,在您的脚本中,首先要做:
attrib -r *.js
attrib -r *.css
之后应该可以删除它们。这可能不是权限问题,因为用于下载文件的帐户也是用于删除文件的帐户。
关于msbuild - YUI压缩机和TFS构建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8171132/