VsTac 任务失败,使用全局 Cordova 工具集时找不到文件 appAsTgz.tgz
Posted
技术标签:
【中文标题】VsTac 任务失败,使用全局 Cordova 工具集时找不到文件 appAsTgz.tgz【英文标题】:VsTac task failed, could not find file appAsTgz.tgz when using global Cordova toolset 【发布时间】:2018-05-11 11:42:55 【问题描述】:当我使用全局安装的 Cordova 7.1.0 工具集并执行 ios 远程构建(到模拟器或本地设备)时,我几乎立即收到错误消息:
Error MSB4018 The "VsTac" task failed unexpectedly.
System.IO.FileNotFoundException: Could not find file 'C:\Users\joe\AppData\Local\Temp\appAsTgz.tgz'.
File name: 'C:\Users\joe\AppData\Local\Temp\appAsTgz.tgz'
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)
at Microsoft.VisualStudio.MultiDeviceHybridApps.MdaBuildTasks.RemoteBuild.AppAsTgzStream(String changeTimeFile, JObject lastChangeTimesMap)
at Microsoft.VisualStudio.MultiDeviceHybridApps.MdaBuildTasks.RemoteBuild.Build()
at Microsoft.VisualStudio.MultiDeviceHybridApps.MdaBuildTasks.VsTac.BuildPlatform()
at Microsoft.VisualStudio.MultiDeviceHybridApps.MdaBuildTasks.VsTac.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() MyFleetGoTest C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\ApacheCordovaTools\vs-mda-targets\Microsoft.MDA.FileMirroring.targets 256
我可以构建 iOS 和 android 浏览器。我可以将工具集更改为<vs:toolsetVersion>6.3.1</vs:toolsetVersion>
,错误消失,消息成功。
是否可以使用全局 Cordova 7.1.0 安装而不是 VS TACO 6.3.1 工具集来进行 iOS 远程构建?这适用于 Visual Studio 2017。
【问题讨论】:
我也问过同样的问题,但没有结果:***.com/questions/47387290/… 我运行的是 Mac 的云版本,所以我运行的是 XCode 10。我可以在不降级到 XCode 9 的情况下让它工作吗? 【参考方案1】:使用 Cordova 和 Visual Studio 2017 (15.5) 为 iOS 编译的最新方法
在 Mac 操作系统中:
安装 Xcode 9.*
安装 Node.JS 6.*。 (https://nodejs.org/dist/latest-v6.x/) - 较新的 NPM 版本暂时无法使用。
通过终端安装 Xcode 组件: xcode-select --install
安装“remotebuild”Microsoft 工具以从 Visual Studio (Windows) 进行远程编译: sudo npm install -g remotebuild
安装 COCOA Pod(较新的 Cordova 7.1.0 需要): sudo gem install cocoapods
设置 COCOA Pods 供您首次使用只需运行命令(下载大约 680 MB): 吊舱设置
- 设置权限:
sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config
启动remotebuild开始监听: 远程构建在 Windows 中:
安装更新的 Visual Studio 2017 (15.5)...
安装 Node.JS 6.*。 (https://nodejs.org/dist/latest-v6.x/) - 较新的 NPM 版本暂时无法使用。
安装 Global Cordova 版本(兼容较新的平台和 iOS 版本): npm install -g cordova
到目前为止,当 Cordova 项目加载 VS 强制集以使用 Cordova Toolset 6.3.1 时,VS 2017 有一个错误 (https://developercommunity.visualstudio.com/content/problem/94814/vs-153-cordova-cannot-use-global-cordova-anymore.html)。要解决它(解决方法): 更改 config.xml 中的以下行(使用 xml 编辑器打开):来自
<vs:toolsetVersion>6.3.1</vs:toolsetVersion>
到
<vs:toolsetVersion>GlobalCordovaVersion</vs:toolsetVersion>
<engine name="android" spec="5.2.1" /> //if the file has another line with a newer version
<engine name="ios" spec="4.2.0" /> //if the file has another line with a newer version
<engine name="windows" spec="4.4.2" /> //if the file has another line with a newer version
<preference name="windows-target-version" value="10.0" /> //if the file has another line with a newer version
使用 remotebuild 生成的配置(在 Mac OS 中运行)设置 Visual Studio(工具 > 选项 > Apache Cordova 工具)。画面示例: Remote Agent Output
提示:在配置之前尝试 ping。如果您有问题,请使用 IP 代替计算机名。构建。您可以在 bin\iOS\Debug 文件夹中找到您的 *.ipa 文件。
【讨论】:
解决了,谢谢!对我来说关键是“安装 Node.JS 6.*。(nodejs.org/dist/latest-v6.x) - 较新的 NPM 版本暂时无法使用。” 还有没有办法让它在更高版本的 Node JS 上工作?我现在在使用 NodeJS 时遇到错误,告诉我 NodeJS 6* 已达到使用寿命,所以我必须安装 NodeJS 10* 才能运行任何 npm 命令,然后卸载并重新安装 NodeJS 6* 才能部署到 iOS,这太疯狂了! @trfletch 我放弃使用 Cordova。我现在正在将我所有的移动项目迁移到 Xamarin,因为我使用 C# 和 Microsoft Techs 进行编程。此外,Microsoft 不再支持 Cordova。 我经常来这里,但我现在又被杀了。对于 ios6.1 和 android9.0,我需要使用最新的 node10x,并且可以通过命令行构建 android,但是通过 visualstudio 的 ios 会出现此错误,我可以毫无问题地 ping 我的 mac,它的开发环境是正确的。无法理解这个【参考方案2】:是的,这是可能的,直到今天我一直能够做到这一点而没有太多问题,但是今天我遇到了你提到的问题,我花了一整天的时间试图解决它。
不幸的是,我无法确切说明是什么原因造成的,因为在更新为使用 wkwebview for IOS 后,我一直在尝试解决 CORS 问题(顺便说一下,我使用的是 Ionic 框架)。
在尝试了各种方法后,我现在已经解决了这个问题,例如安装 Visual Studio 的最新更新,尝试将 Node.js 升级到最新版本(由于出现问题,我不得不恢复到 6.12.0 版本)节点萨斯)。
再次,很难说到底是什么解决了这个问题,因为我今天花了几个小时在恐慌中尝试各种事情来解决这个问题,但我认为解决方案是:
-
在我的项目中删除 node_modules
运行 npm install 重建 node_modules 文件夹
我还必须运行 npm install -g cordova@latest
【讨论】:
【参考方案3】:这是由于 NPM 5.5 中的一个错误造成的。我相当肯定它与这个错误有关:
https://github.com/npm/npm/issues/17858
我安装了 NodeJS 6.*(而不是最新的 LTS 8.*)并且问题消失了。重新安装 8.* 会导致问题再次蔓延。
【讨论】:
以上是关于VsTac 任务失败,使用全局 Cordova 工具集时找不到文件 appAsTgz.tgz的主要内容,如果未能解决你的问题,请参考以下文章
任务执行失败:processDebugResources [ Cordova / Ionic ]
Ionic Cordova 7.1.4 Android 构建失败
任务“:compileArmv7DebugJavaWithJavac”执行失败