VsTac task failed, could not find file appAsTgz.tgz when using global Cordova toolset

China☆狼群 提交于 2019-12-01 02:17:59

问题


When I use my globally installed Cordova 7.1.0 toolset and do an iOS remote build (to simulator or to Local Device), I almost immediately get the error message:

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 

I can do iOS and Android browser builds. I can change the toolset to <vs:toolsetVersion>6.3.1</vs:toolsetVersion> and the error goes away and the message succeeds.

Is it possible to use the global Cordova 7.1.0 install instead of the VS TACO 6.3.1 toolset and get working iOS remote builds? This is with Visual Studio 2017.


回答1:


Latest way to compile for iOS using Cordova and Visual Studio 2017 (15.5)

In Mac OS:

  • Install Xcode 9.*

  • Install Node.JS 6.*. (https://nodejs.org/dist/latest-v6.x/) - Newer NPM version doesn't work for now.

  • Install Xcode components via terminal: xcode-select -–install

  • Install "remotebuild" Microsoft tool for remote compile from Visual Studio (Windows): sudo npm install -g remotebuild

  • Install COCOA Pods (needed by newer Cordova 7.1.0): sudo gem install cocoapods

  • Setup COCOA Pods for your first use just running command (about 680 MB to download): pod setup

​ - Set permissions:

sudo chown -R $USER:$GROUP ~/.npm

sudo chown -R $USER:$GROUP ~/.config

  • Start remotebuild to start listen: remotebuild

In Windows:

  • Install newer Visual Studio 2017 (15.5)...

  • Install Node.JS 6.*. (https://nodejs.org/dist/latest-v6.x/) - Newer NPM version doesn't work for now.

  • Install Global Cordova version (compatible with newer platforms and iOS versions): npm install -g cordova

  • Until now the VS 2017 has a bug (https://developercommunity.visualstudio.com/content/problem/94814/vs-153-cordova-cannot-use-global-cordova-anymore.html) when Cordova project loads the VS force set to use Cordova Toolset 6.3.1. To solve it (workaround):
    • Change the follow line in config.xml (open using xml editor):

From

<vs:toolsetVersion>6.3.1</vs:toolsetVersion>

To

<vs:toolsetVersion>GlobalCordovaVersion</vs:toolsetVersion>

  • Remove the follow lines from config.xml (open using xml editor):

<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

  • Setup Visual Studio (Tools > Options > Tools For Apache Cordova)​ with the config generated by remotebuild (running in Mac OS). Screen example: Remote Agent Output

    • Tip: Try a ping before configure. If you have a problem, use IP instead computer name.
  • Build. You can locate your *.ipa file in bin\iOS\Debug folder.




回答2:


Yes it is possible and up until today I have been able to do this without too many problems however today I experienced the issue you have mentioned and I have spent all day trying to resolve it.

Unfortunately I cannot say exactly what caused it because I have been making lots of changes trying to resolve CORS issues after updating to use wkwebview for IOS (I am using Ionic framework by the way).

I have now resolved the issue after trying various things such as installing the latest updates for Visual Studio, trying to upgrade Node.js to the latest version (which I then had to revert back to version 6.12.0 due to problems with node-sass).

Again it is difficult to say exactly what fixed this because I have spent hours today trying various things in a panic to resolve the issue but I think it the solution was:

  1. Delete node_modules in my project
  2. Run npm install to rebuild the node_modules folder
  3. I also had to run npm install -g cordova@latest



回答3:


This is due to a bug in NPM 5.5. I'm fairly certain it's related to this bug:

https://github.com/npm/npm/issues/17858

I installed NodeJS 6.* (and not the latest LTS 8.*) and the issue went away. Reinstalling 8.* causes the issue to creep up again.



来源:https://stackoverflow.com/questions/47524425/vstac-task-failed-could-not-find-file-appastgz-tgz-when-using-global-cordova-to

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!