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.
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.
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:
- Delete node_modules in my project
- Run npm install to rebuild the node_modules folder
- I also had to run npm install -g cordova@latest
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