2012-02-09 79 views
19

我们有一个ASP.NET MVC项目,我们希望在自动构建期间创建发布包。构建使用未修改的默认模板和参数/p:DeployOnBuild=True /p:CreatePackageOnPublish=TrueTFS 2010 - 复制期间发生错误:路径太长

如果我直接对服务器执行WebDeploy,它工作正常(如果将/ p:CreatePackageOnPublish更改为false),但我更愿意创建一个可在Lab生成期间部署的包。

错误信息是这样的:

TF270002:出现了一个错误,复制文件 'C:\构建\ 19个\二进制' 到“\ NAS \建立\删除\ MyProject的\ MyProject_Development.Test \ 20120209.1' 。 细节:指定的路径,文件名或这两者太长。 完全限定的文件名必须少于260个字符,并且 目录名称必须少于248个字符。

问题的第一部分是build文件夹路径太长(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)以节省几个字符,但这还不够。我想我们可以稍微缩短构建名称,但它会破坏所使用的命名约定(好吧,这不会是一个很大的问题,但它会很烦人!),它仍然会像短期解决方案。

还有什么可做的?

回答

13

简短的答案是路径长度限制真的很烦人,你将不得不花费一些(更多)时间调整文件/文件夹结构来完成这项工作。

例如,如果不是\ nas \ Build \ Drop \ MyProject,只需执行\ nas \ Build \ Drop(或\ nas \ Builds),因为项目名称也在构建名称中。

展平项目中的文件夹结构(你真的需要MyProject下的Source文件夹吗?)。

此外,去投给UserVoice的建议为TFS团队来解决路径长度限制:http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2156195-fix-260-character-file-name-length-limitation

+0

我害怕,有没有更好的解决这个...我已经削减尽可能的多余的(我的构建现在称为M_D.T,非常有用),现在它的构建虽然我最长的路径是250个字符,所以它有点接近极限的舒适度。感谢您的回答以及UserVoice的链接! – 2012-02-10 08:19:03

+1

更新:修复此问题的功能建议被Microsoft拒绝。 – 2013-10-17 12:33:29

+2

新的用户语音链接,保持压力;) http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/4954037-fix-260-character-file-name-length-limitation – rob 2013-11-18 16:38:31