我们有一个ASP.NET MVC项目,我们希望在自动构建期间创建发布包。构建使用未修改的默认模板和参数/p:DeployOnBuild=True /p:CreatePackageOnPublish=True
。TFS 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)
以节省几个字符,但这还不够。我想我们可以稍微缩短构建名称,但它会破坏所使用的命名约定(好吧,这不会是一个很大的问题,但它会很烦人!),它仍然会像短期解决方案。
还有什么可做的?
我害怕,有没有更好的解决这个...我已经削减尽可能的多余的(我的构建现在称为M_D.T,非常有用),现在它的构建虽然我最长的路径是250个字符,所以它有点接近极限的舒适度。感谢您的回答以及UserVoice的链接! – 2012-02-10 08:19:03
更新:修复此问题的功能建议被Microsoft拒绝。 – 2013-10-17 12:33:29
新的用户语音链接,保持压力;) http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/4954037-fix-260-character-file-name-length-limitation – rob 2013-11-18 16:38:31