我有一个解决方案结构,其中我使用一些带有符号链接的项目,以便在不同的解决方案之间轻松重用代码。
它在VS2013 CTP3.1上运行得很完美,但是在VS2015上,我一直在间歇地得到以下内容:
MDAVSCLI : error : EBUSY, resource busy or locked 'F:\Github\softwrench\softwrench.sw4.pae\offline_content\pae'
1> at Error (native)
1> at Object.fs.symlinkSync (fs.js:848:18)
1> at cpdirSyncRecursive (C:\Users\rolim\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\5.1.1\node_modules\cordova\node_modules\cordova-lib\node_modules\shelljs\src\cp.js:76:10)
1> at cpdirSyncRecursive (C:\Users\rolim\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\5.1.1\node_modules\cordova\node_modules\cordova-lib\node_modules\shelljs\src\cp.js:73:7)
1> at C:\Users\rolim\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\5.1.1\node_modules\cordova\node_modules\cordova-lib\node_modules\shelljs\src\cp.js:180:9
1> at Array.forEach (native)
1> at Object._cp (C:\Users\rolim\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\5.1.1\node_modules\cordova\node_modules\cordova-lib\node_modules\shelljs\src\cp.js:157:11)
1> at Object.cp (C:\Users\rolim\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\5.1.1\node_modules\cordova\node_modules\cordova-lib\node_modules\shelljs\src\common.js:186:23)
1> at android_parser.update_www (C:\Users\rolim\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\5.1.1\node_modules\cordova\node_modules\cordova-lib\src\cordova\metadata\android_parser.js:316:11)
1> at C:\Users\rolim\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\5.1.1\node_modules\cordova\node_modules\cordova-lib\src\cordova\prepare.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);
}
}
任何人都知道会发生什么事吗?
TKS
答案 0 :(得分:1)
最后,我能想到的唯一解决方案是编辑第71行的cordova-lib项目的cp.js文件,以便符号链接获得与普通目录相同的处理:
所以:
if (srcFileStat.isDirectory()) {
变成了:
if (srcFileStat.isDirectory() || srcFileStat.isSymbolicLink()) {
不确定是否有任何影响,而不是我到目前为止注意到的。
希望它可以帮助其他人