VS2015 Cordova MDAVSCLI : error : EBUSY, resource busy or lo



我有一个解决方案结构,其中我使用一些带有符号链接的项目,以便在不同的解决方案之间轻松重用代码。

它在VS2013 CTP3.1上完美地工作,但在VS2015上,我断断续续地得到以下内容:

MDAVSCLI : error : EBUSY, resource busy or locked 'F:Githubsoftwrenchsoftwrench.sw4.paeoffline_contentpae'
1>      at Error (native)
1>      at Object.fs.symlinkSync (fs.js:848:18)
1>      at cpdirSyncRecursive (C:UsersrolimAppDataRoamingnpmnode_modulesvs-tacnode_modulescordova5.1.1node_modulescordovanode_modulescordova-libnode_modulesshelljssrccp.js:76:10)
1>      at cpdirSyncRecursive (C:UsersrolimAppDataRoamingnpmnode_modulesvs-tacnode_modulescordova5.1.1node_modulescordovanode_modulescordova-libnode_modulesshelljssrccp.js:73:7)
1>      at C:UsersrolimAppDataRoamingnpmnode_modulesvs-tacnode_modulescordova5.1.1node_modulescordovanode_modulescordova-libnode_modulesshelljssrccp.js:180:9
1>      at Array.forEach (native)
1>      at Object._cp (C:UsersrolimAppDataRoamingnpmnode_modulesvs-tacnode_modulescordova5.1.1node_modulescordovanode_modulescordova-libnode_modulesshelljssrccp.js:157:11)
1>      at Object.cp (C:UsersrolimAppDataRoamingnpmnode_modulesvs-tacnode_modulescordova5.1.1node_modulescordovanode_modulescordova-libnode_modulesshelljssrccommon.js:186:23)
1>      at android_parser.update_www (C:UsersrolimAppDataRoamingnpmnode_modulesvs-tacnode_modulescordova5.1.1node_modulescordovanode_modulescordova-libsrccordovametadataandroid_parser.js:316:11)
1>      at C:UsersrolimAppDataRoamingnpmnode_modulesvs-tacnode_modulescordova5.1.1node_modulescordovanode_modulescordova-libsrccordovaprepare.js:96:20

我看了代码,它似乎试图处理符号链接,所以这似乎是一个错误:

 if (srcFileStat.isDirectory()) {
  /* recursion this thing right on back. */
  cpdirSyncRecursive(srcFile, destFile, opts);
} else if (srcFileStat.isSymbolicLink()) {
  var symlinkFull = fs.readlinkSync(srcFile);
 76: fs.symlinkSync(symlinkFull, destFile, os.platform() === "win32" ? "junction" : null);
} else {
  /* At this point, we've hit a file actually worth copying... so copy it on over. */
  if (fs.existsSync(destFile) && !opts.force) {
    common.log('skipping existing file: ' + files[i]);
  } else {
    copyFileSync(srcFile, destFile);
  }
}

有人知道这里发生了什么吗?

谢谢

最后,我能想到的唯一解决方案是编辑cordova-lib项目的cp.js文件,对于第71行,使符号链接得到与普通目录相同的处理:

:

if (srcFileStat.isDirectory()) {

变成:

if (srcFileStat.isDirectory() || srcFileStat.isSymbolicLink()) {

不确定是否有任何影响,到目前为止我还没有注意到。

希望对大家有所帮助

相关内容

最新更新