我们有一个ASP.NET MVC项目,我们希望在自动构建过程中从中创建一个发布包。该构建使用带有参数/p:DeployOnBuild=True /p:CreatePackageOnPublish=True
的未修改默认模板。
如果我直接将WebDeploy部署到服务器,则可以正常工作(如果将/ p:CreatePackageOnPublish更改为false),但我希望仅创建一个可以在Lab构建期间部署的程序包。
错误消息如下所示:
TF270002: An error occurred copying files from 'C:\Builds\19\Binaries' to '\nas\Build\Drop\MyProject\MyProject_Development.Test\20120209.1'. Details: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
问题的第一部分是构建文件夹路径太长(274个字符),但是在将工作目录从
$(SystemDrive)\Builds\$(BuildAgentId)\$(BuildDefinitionPath)
更改为$(SystemDrive)\Builds\$(BuildDefinitionId)
后,它的最长路径减少到230个字符,因此应该可以。现在的问题似乎是放置文件夹中的路径,即使它的根路径本身不是那么长
\\nas\Build\Drop\MyProject
,构建名称和内部编号格式也会迅速增加长度MyProject_Development.Test\MyProject_Development.Test_20120208.1
。之后,它们所有的嵌套路径都会创建非常深的文件夹结构_PublishedWebsites\MyProject.Web_Package\Archive\Content\C_C\Builds\19\Sources\MyProject\Source\MyProject.Web\obj\Debug\Package\PackageTmp\Content\ui-lightness\Images\ui-bg_diagonals-thick_18_b81900_40x40.png
。那么有什么办法可以解决这个问题呢?我将内部版本号格式从
$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)
缩短为$(Date:yyyyMMdd)$(Rev:.r)
,以节省一些字符,但这还不够。我想我们可以稍微缩短构建名称,但这会破坏所使用的命名约定(好吧,这不是一个很大的问题,但是会很烦人!),但仍然感觉是一个短期解决方案。还需要做什么?
最佳答案
简短的答案是,路径长度限制确实很烦人,您将不得不花费一些(更多)时间来调整文件/文件夹结构以使其正常工作。
例如,不要执行\ nas \ Build \ Drop \ MyProject,而是执行\ nas \ Build \ Drop(或\ nas \ Builds),因为项目名称也位于生成名称中。
展平项目中的文件夹结构(您真的需要MyProject下的Source文件夹吗?)。
另外,请投票支持TFS小组的UserVoice建议以解决路径长度限制:http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2156195-fix-260-character-file-name-length-limitation
关于tfs - TFS 2010-复制期间发生错误:路径太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9211302/